16

クラスを作成するときに、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をどのように提供しますか?

4

1 に答える 1

16

実行時に実行できます。これらのクラスで:

class MyConverter : TypeConverter
{
}

sealed class MyClass
{   
}

次を使用できます。

TypeDescriptor.AddAttributes(typeof(MyClass), new TypeConverterAttribute(typeof(MyConverter)));
于 2012-12-18T00:33:56.160 に答える