我想编写以下函数,它接受一个已知具有名为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.Amount
和instance.Amount
的反省。我能够获得getset_descriptor
,但我无法确定如何从该对象中提取类型指示符。
这适用于某些ETL代码,其目标之一是通知调用程序输入中遇到的错误数据类型。我的代码想知道遇到的是什么,以及期望的类型。
答案 0 :(得分:2)
最好的办法是使用正常的.NET System.Reflection API:
instance = test_class()
answer = instance.GetType().GetProperty("Amount").PropertyType
起点是System.Type;所有的.NET类型元数据都可以从那里获得。