Я хотел бы реализовать преобразование между двумя библиотечными классами с помощью Convert.ChangeType в C #. Я не могу изменить ни один из двух типов. Например, преобразование между Guid и byte [].
Guid g = new Guid();
object o1 = g;
byte[] b = (byte[]) Convert.ChangeType(o1, typeof(byte[])); // throws exception
Мне известно, что Guid предоставляет метод ToByteArray (), но я бы хотел, чтобы он вызывался при преобразовании Guid в byte []. Причина этого заключается в том, что преобразование также происходит в коде библиотеки (AseDataAdapter), который я не могу изменить. Так возможно ли определить правило преобразования между двумя типами без изменения исходного кода любого из двух классов?
Я экспериментировал с TypeConverter, но, похоже, тоже не работает:
Guid g = new Guid();
TypeConverter tc = TypeDescriptor.GetConverter(typeof(Guid));
byte[] b2 = (byte[])tc.ConvertTo(g, typeof(byte[])); // throws exception
Переменная tc устанавливается в System.ComponentModel.GuidConverter, которая не поддерживает преобразования в byte []. Могу ли я иметь два TypeConverter для одного класса? Даже если бы я мог, не нужно ли мне добавлять атрибут к исходному коду класса для назначения TypeConverter?
Спасибо