С моей точки зрения, есть два пути для вас.
Первый описан здесь , и это глобальный способ сделать это. Создайте конвертер и используйте его там, где вы хотите.
Вторым будет переопределение функции ConvertTo()
в BatchSummary
, поскольку ваш объект не поддерживает (пока, пока вы не реализуете) преобразование,и именно поэтому вы получаете NotSupportedException.
Большинство собственных типов данных (Int32, String, перечислимые типы и другие) имеют преобразователи типов по умолчанию, которые обеспечивают преобразования строк в значения и выполняют проверки правильности. Преобразователи типов по умолчанию находятся в пространстве имен System.ComponentModel и называются TypeConverterNameConverter. Вы можете расширить конвертер типов, если функциональность по умолчанию не подходит для ваших целей, или реализовать собственный конвертер типов, когда вы определяете нестандартный тип, у которого нет связанного конвертера типов.
Вы можете проверить microsoft docs о том, как создать конвертер для неизвестных значений.
По сути, вам нужно сделать следующее:
// Overrides the ConvertTo method of TypeConverter.
public override object ConvertTo(object value, Type destinationType) {
if (destinationType == typeof(byte[])) {
// Do whatever transformation you want here
return transformedObject;
}
return base.ConvertTo(value, destinationType);
}
ПосколькуТип объекта известен, вы можете делать с ним все что угодно. Вам также может понадобиться создать ConvertFrom, чтобы вернуть объект.