Ironpython获得点网类的属性类型

时间:2013-10-14 16:58:23

标签: types ironpython

我想编写以下函数,它接受一个已知具有名为Amount的属性的随机Dot Net类,并返回该属性的Dot Net类型的一些指示。 Amount通常是可以为空的类型,因此instance在创建时最终会以null(Python None)结束。

def learn_type(test_class):

    '''Given Dot Net class test_class, return the type of the nullable Amount property.'''

    instance = test_class()
    answer = type(instance.Amount) # always NoneType

    return answer

了解instance.Amount

类型的正确方法是什么?

除了上面的代码之外,我还尝试了对test_class.Amountinstance.Amount的反省。我能够获得getset_descriptor,但我无法确定如何从该对象中提取类型指示符。

这适用于某些ETL代码,其目标之一是通知调用程序输入中遇到的错误数据类型。我的代码想知道遇到的是什么,以及期望的类型。

1 个答案:

答案 0 :(得分:2)

最好的办法是使用正常的.NET System.Reflection API:

instance = test_class()
answer = instance.GetType().GetProperty("Amount").PropertyType

起点是System.Type;所有的.NET类型元数据都可以从那里获得。