问题
When creating a class, a TypeConverter attribute can be applied to it s.t. using TypeDescriptor.GetConverter(typeof(T)) return the custom type converter. For instance:
[TypeConverter(typeof(FooConverter))]
public class Foo
{...}
public class FooConverter: TypeConverter
{...}
var tc = TypeDescriptor.GetConverter(typeof(T)); //returns a FooConverter instance.
This works as long as the class is of our making. But how would one provide a custom TypeConverter for a class which we cannot modify the source code? For example, how would one provide a custom TypeConverter for the the System.Version class (which does not have one)?
回答1:
You can do it at runtime. With these classes:
class MyConverter : TypeConverter
{
}
sealed class MyClass
{
}
You can use:
TypeDescriptor.AddAttributes(typeof(MyClass), new TypeConverterAttribute(typeof(MyConverter)));
来源:https://stackoverflow.com/questions/13924494/typeconverter-attribute-for-third-party-classes