2009-07-30 9 views
4

静的コンストラクタ内でGetTypeに相当するものを取得する方法はありますか?静的コンストラクタでTypeInfoを取得

静的コンストラクタ内の型の利用可能なプロパティを反復処理したいが、GetTypeはインスタンスメソッドですか?どうしてこれなの? typeinfoは静的コンテキストに存在する必要があります。これを回避する方法はありますか?

答えて

2

ちょうどあなたが常に実際の型を知っているので、これはこれよりも複雑になることはありません

Type type = typeof(TheCurrentType); 

を使用します。静的メソッドで扱うポリモーフィズムはありません。

+0

しかし、私はランタイムの種類を知る必要があります。私はこのクラスを継承するすべてのランタイム型(実行時)を登録したいので、すべての属性とプロパティを参照してカスタムエンジンに登録する必要があります。これは、アプリの存続期間中に1回タイプごとに実行する必要があります。各サブクラスごとに、実行時の型を解決する方法がありますか? – Shimmy

+0

@Shimmy静的メソッドには多型はありません。静的メソッドは、派生型に関係なく、宣言された型に属します。 –

+0

サブクラスから呼び出される基本型に単純なprotected staticメソッドRegisterMetadata(Type型)を作成することにしました。つまり、すべてのサブクラスの静的ctorからこのメソッドの呼び出しを強制する方法はありません。ありがとう。 – Shimmy

0

派生型を取得することはできません(現在の型から派生したものをすべての型から反復することを除いて)。現在のタイプを取得するには、次のようにします:

Type currentType = (new StackFrame()).GetMethod().DeclaringType; 
関連する問題