Задание значений байтов с использованием синтаксиса атрибута не работает. Однако можно указать байтовые значения, используя синтаксис элемента свойства.
Добавьте следующее объявление xmlns:
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Вы должны быть в состоянии указать свойства байта следующим образом:
<local:AddressType Name="Select">
<local:AddressType.ID>
<sys:Byte>0</sys:Byte>
</local:AddressType.ID>
</local:AddressType>
Это немного грязно, поэтому вы можете реализовать собственный преобразователь типов и пометить свое свойство атрибутом для использования этого преобразователя типов.
TypeConverter должен выглядеть примерно так:
public class ByteTypeConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return sourceType == typeof(string);
}
public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
if (value is string)
{
return Byte.Parse(value as string);
}
else
{
return base.ConvertFrom(context, culture, value);
}
}
}
И затем вы хотите изменить свой класс так, чтобы свойство указывало на этот преобразователь типов:
public class AddressType
{
[TypeConverter(typeof(ByteTypeConverter))]
public byte ID { get; set; }
public string Name { get; set; }
}
Теперь вы сможете использовать обычный синтаксис атрибута свойства:
<local:AddressType ID="0" Name="Select"/>