2
0
mirror of https://github.com/esiur/esiur-dotnet.git synced 2025-06-27 05:23:13 +00:00

ResourceTemplate 2.0

This commit is contained in:
2021-05-25 17:06:19 +03:00
parent c8683e17e9
commit 82cbe3b01c
26 changed files with 1105 additions and 272 deletions

View File

@ -0,0 +1,49 @@
using Esiur.Data;
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace Esiur.Resource.Template
{
public class ArgumentTemplate
{
public string Name { get; set; }
public TemplateDataType Type { get; set; }
public ParameterInfo ParameterInfo { get; set; }
public static (uint, ArgumentTemplate) Parse(byte[] data, uint offset)
{
var cs = (uint)data[offset++];
var name = DC.GetString(data, offset, cs);
offset += cs;
var (size, type) = TemplateDataType.Parse(data, offset);
return (cs + 1 + size, new ArgumentTemplate(name, type));
}
public ArgumentTemplate()
{
}
public ArgumentTemplate(string name, TemplateDataType type)
{
Name = name;
Type = type;
}
public byte[] Compose()
{
var name = DC.ToBytes(Name);
return new BinaryList()
.AddUInt8((byte)name.Length)
.AddUInt8Array(name)
.AddUInt8Array(Type.Compose())
.ToArray();
}
}
}