21

System.Typeプロパティが含まれていUnderlyingSystemTypeます。MSDNは、次のように述べています。

このタイプを表す共通言語ランタイムによって提供されるタイプを示します。

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

私の質問は、どのような状況でこのプロパティが現在のインスタンス自体を返さないのかということです。Typeそして、そのような場合、現在のTypeインスタンスと返される基になるシステムタイプはどのようなタイプになりますか?

4

1 に答える 1

7

正直なところ、私は自分でそれをしたことはありませんがRuntimeType、指定したタイプの独自の定義を作成することは可能であることを知っています。

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

したがって、UnderlyingSystemTypeorindaryの場合のプロパティは、オーバーライドされた実装の場合、代わりにプロパティと等しい値RuntimeTypeを返しTypeます(これは、反射動作に影響を与えるためですが、私は個人的にこれまでこれを行ったことはありません)、ユーザー定義の型の値を返します。

編集

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

タイプがタイプではないのはいつですか?

于 2012-06-27T13:30:04.977 に答える