2012-06-27 2 views
18

System.TypeにはUnderlyingSystemTypeというプロパティが含まれています。UnderlyingSystemTypeが現在のTypeインスタンスと異なるのはいつですか

が は、この型を表す共通言語ランタイムが提供するタイプを示します。それMSDN states

ほとんどの場合、このプロパティは現在のTypeインスタンスを返します。

私の質問は、どのような状況でこのプロパティはではなく、は現在のTypeインスタンスを返します。そのような場合、現在のTypeインスタンスはどのような種類のもので、戻される基本システムの種類は?

+3

正確な理由が、ここであなたを伝えること(HTTPについての記事ですCan't: //bradwilson.typepad.com/blog/2009/02/when-is-a-type-not-a-type.html) – Jehof

+1

http://catalog.codeproject.com/Questions/366922/Whats-the-difference -between-UnderlyingSystemTypeはこれに関する情報を含んでいます。 –

+4

私はJon Skeetを待つだけです。彼は決して私を失望させなかった。 – nullpotent

答えて

5

正直言って私はそれを自分でしたことはありませんが、指定したタイプの定義のように自分自身でRuntimeTypeを作成することは可能です。

Typeクラスが抽象クラスであり、多くの抽象メンバを持っていることに気付くと、何が起こるかは、タイプ(それが何であれ)Typeクラスから派生したRuntimeTypeを自動的に作成し、あなたのタイプに実装します。

のでorindary RuntimeTypeの場合の財産UnderlyingSystemTypeTypeプロパティ等しい値を返します、オーバーライド実装の場合には、代わりに、(それはrelfectionの行動に影響を与えるためのものですが、私は前にこれをやっていない個人的に決して繰り返して)、ユーザーを返します。定義された型の値。

EDIT

は実際にコメントでみんなで提供されるリンクは良いものです:

When is a Type not a Type?

+0

その記事本当に役に立ちました、ありがとう – wodzu

関連する問題