2012-06-27 14 views
18

System.Type enthält eine UnderlyingSystemType Eigenschaft. Msdn states, dass es:Wann unterscheidet sich der UnderlyingSystemType von der aktuellen Typinstanz?

den Typ von der Common Language Runtime bereitgestellt Gibt die dieser Art darstellt.

In den meisten Fällen gibt diese Eigenschaft einfach die aktuelle Type Instanz zurück.

Meine Frage ist, unter welchen Umständen diese Eigenschaft nicht die aktuelle Type Instanz selbst zurückgibt. Und in diesen Fällen, welche Art von Typ wird die aktuelle Type Instanz und der zurückgegebene zugrunde liegende Systemtyp sein?

+3

Kann nicht genau sagen warum, aber hier ist ein Artikel über die Tatsache, (http: //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 enthält einige Informationen dazu. –

+4

Ich warte nur auf Jon Skeet. Er hat mich nie im Stich gelassen. – nullpotent

Antwort

5

Um ehrlich zu sein, ich habe es nie von mir, aber ich weiß, dass es möglich ist, Ihre eigenen RuntimeType wie Definition Ihres angegebenen Typs zu schaffen.

Wenn Sie bemerken, die Type Klasse abstrakt ist und eine Menge von abstrakten memebers hat. Was passiert ist, dass Ihre Art (was auch immer es ist) erstellt automatisch RuntimeType abgeleitet von Type Klasse und implementiert es für Ihren Typ.

So Eigentum UnderlyingSystemType bei orindary RuntimeTypeType Eigenschaft den gleichen Wert zurück, bei überschriebene Implementierung statt, (dh für relfection Verhalten zu beeinflussen, aber ich wiederhole ich persönlich nie zuvor), wird der Benutzer zurückkehren -definierter Typwert

EDIT

Tatsächlich ist die Verbindung von Jungs in den Kommentaren versehen ist gut:

When is a Type not a Type?

+0

dieser Artikel war wirklich hilfreich, danke – wodzu

Verwandte Themen