1

我有一个包含一定数量的自定义 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,我应该期待同样的行为吗?

4

0 回答 0