Атрибут TypeConverter для сторонних классов

При создании класса к нему может быть применен атрибут TypeConverter s.t. используя TypeDescriptor.GetConverter(typeof (T)) возвращает конвертер настраиваемого типа. Например:

[TypeConverter(typeof(FooConverter))]
public class Foo
{...}

public class FooConverter: TypeConverter
{...}

var tc = TypeDescriptor.GetConverter(typeof(T)); //returns a FooConverter instance.

Это работает до тех пор, пока класс нашего дела. Но как можно предоставить настраиваемый TypeConverter для класса, который мы не можем изменить исходный код? Например, каким образом можно предоставить настраиваемый TypeConverter для класса System.Version(который его не имеет)?

Ответы

Ответ 1

Вы можете сделать это во время выполнения. С этими классами:

class MyConverter : TypeConverter
{
}

sealed class MyClass
{   
}

Вы можете использовать:

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