我想通过C#中的Convert.ChangeType实现两个库类之间的转换。我可以改变这两种类型。例如在Guid和byte []之间转换。我知道Guid提供了一个ToByteArray()方法,但我希望在Guid被转换为byte []时调用该方法。这背后的原因是转换也发生在我无法修改的库代码(AseDataAdapter)中。那么是否可以在两种类型之间定义转换规则而不修改两个类中的任何一个的源代码?将自定义类型转换为.NET库类
我用的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 []。我可以为同一班级安装两台TypeConverters吗?即使我可以,也不需要在类的源代码中添加一个属性来分配TypeConverter?
感谢
据我所知,有TypeConverterAttribute没有装配级使用;你可以做每个类型和每个属性,并通过TypeDescriptor重写 - 但没有集合级别?我错过了什么吗? – 2009-03-03 16:06:19
TypeConverterAttribute被声明为AttributeTargets.All ...和ISTR看到这在WF中使用。 – Richard 2009-03-04 08:57:34