第三方类的TypeConverter属性

在创建类时,可以使用TypeDescriptor.GetConverter(typeof(T))将TypeConverter属性应用于它,返回自定义类型转换器。 例如:

[TypeConverter(typeof(FooConverter))] public class Foo {...} public class FooConverter: TypeConverter {...} var tc = TypeDescriptor.GetConverter(typeof(T)); //returns a FooConverter instance. 

只要课程是我们制作的,这就有效。 但是如何为一个我们无法修改源代码的类提供自定义TypeConverter呢? 例如,如何为System.Version类(没有一个)提供自定义TypeConverter?

您可以在运行时执行此操作。 有了这些课程:

 class MyConverter : TypeConverter { } sealed class MyClass { } 

您可以使用:

 TypeDescriptor.AddAttributes(typeof(MyClass), new TypeConverterAttribute(typeof(MyConverter)));