从被调用的类访问一个typeconverter

时间:2012-10-16 10:28:23

标签: c# invoke typeconverter

我有一个包含一定数量的自定义TypeConverter的应用程序。它们在XML解析的上下文中使用时效果很好。

另一方面,我使用以下方法调用类构造函数(基于一些先前定义的XML标记)(到目前为止):

Type MyClass = TypeDelegator.GetType( FullClassName );               // Get the class type
if( MyClass != null ) {                                              // If we find a matching type
    ConstructorInfo[] CtorInfos = MyClass.GetConstructors();         // Get constructor infos
    if( CtorInfos != null ) {                                        // If we could find a ctor
        if( CtorInfos.Length == 1 ) {                                // We expect 1 Ctor with args
            CtorInfos[0].Invoke( new object[] { CtorArg1, CtorArg2 } ); 
        }
    }
}

现在我尝试在调用的构造函数中重用TypeConverter。但它似乎不起作用。我一直在使用常规的GetConverter方法:

MyType myVar = (MyType)TypeDescriptor.GetConverter( typeof( MyType ) ).ConvertFrom( "1;2;3;4" );  

类型类与以下内容类似:

public class MyType {
    private int PrivateField;
    public MyType() { }
    public MyType( String Arg1, Char Arg2 ) { }
    public int Prop1 { get { return ( 4 ); } }
    public int Prop2 { 
        get { return ( PrivateField ); }
        set { PrivateField = value; } 
    }
}  

深入研究问题,似乎TypeDescriptor.GetConverter找不到自定义类型转换器(属于同一个程序集)。

var debugVar = TypeDescriptor.GetConverter( typeof( MyType ) );  

始终返回TypeConverter而不是预期的“TypeConverterMyType”。这让我觉得“TypeConverterMyType”可能因为调用而无法访问。

[更新]
似乎TypeDescriptor.GetConverter适用于枚举类型,但不适用于基于类的类型。我想我正在旁边传递这个难题的一个重要部分......:

所以问题:
1-实际上是否可以从调用的方法访问自定义类型转换器? 2-有没有更好/更聪明的方法来处理这个问题? 3-我正在使用.Net 3.5,如果我升级到4.0或4.5,我应该期待相同的行为吗?

0 个答案:

没有答案