Я хотел бы реализовать преобразование между двумя библиотечными классами Convert.ChangeType в С#. Я не могу изменить ни один из двух типов. Например, преобразование между 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, которая не поддерживает преобразования в байт []. Могу ли я иметь два TypeConverters для одного и того же класса? Даже если бы я мог, мне не нужно было бы добавлять атрибут к исходному коду класса для назначения TypeConverter?
Спасибо