【发布时间】:2010-10-11 01:09:23
【问题描述】:
我想通过 C# 中的 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,它不支持转换为 byte[]。我可以为同一个班级有两个 TypeConverter 吗?即使可以,我不需要在类的源代码中添加一个属性来分配 TypeConverter 吗?
谢谢
【问题讨论】: