Атрибут 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 (у которого его нет)?


person TRISAbits    schedule 18.12.2012    source источник
comment
Я считаю, что здесь есть ответ: msdn.microsoft.com/en-us/library /ayybcxe5.aspx   -  person Tim Booker    schedule 18.12.2012
comment
Спасибо за ссылку. Я прочитал эту статью до публикации здесь, и я не верю, что она решает мою проблему. Тем не менее, это все еще хорошая статья.   -  person TRISAbits    schedule 18.12.2012


Ответы (1)


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

class MyConverter : TypeConverter
{
}

sealed class MyClass
{   
}

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

TypeDescriptor.AddAttributes(typeof(MyClass), new TypeConverterAttribute(typeof(MyConverter)));
person Mir    schedule 18.12.2012
comment
Да, это работает. К сожалению, это нужно делать во время выполнения, но это лучше, чем ничего. Спасибо за помощь! - person TRISAbits; 18.12.2012