2

Amount呼び出されるプロパティを持つことが知られているランダムな Dot Net クラスを受け取り、そのプロパティの Dot Net タイプを示す 次の関数を書きたいと思います。Amount通常、null 許容型になるため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 コード用であり、その目的の 1 つは、入力で検出された不正なデータ型を呼び出しプログラムに通知することです。私のコードは、何が発生したか、どのタイプが期待されたかの両方を知りたいと思っています。

4

1 に答える 1

2

最善の策は、通常の .NET System.Reflection API を使用することです。

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

出発点はSystem.Typeです。そこからすべての .NET タイプのメタデータを利用できます。

于 2013-10-15T19:42:03.837 に答える