Quando UnderlyingSystemType differisce dall’istanza di tipo corrente

System.Type contiene una proprietà UnderlyingSystemType . Msdn afferma che:

Indica il tipo fornito dal Common Language Runtime che rappresenta questo tipo.

Nella maggior parte dei casi, questa proprietà restituisce semplicemente l’istanza di Type corrente.

La mia domanda è, in quali circostanze questa proprietà non restituisce l’istanza di Type corrente stessa. E in quei casi, quale tipo di tipo sarà l’istanza di Type corrente e il tipo di sistema sottostante restituito sarà?

Ad essere onesti non l’ho mai fatto da solo, ma so che è ansible creare il proprio RuntimeType come la definizione del tipo specificato.

Se noti che la class Type è astratta e ha molti memebers astratti. Quello che succede è che il tuo tipo (qualunque esso sia) crea automaticamente RuntimeType derivato dalla class Type e lo implementa per il tuo tipo.

Quindi la proprietà UnderlyingSystemType in caso di RuntimeType RuntimeType restituirà la proprietà Type valore uguale, in caso di implementazione sovrascritta, invece, (cioè per influenzare il comportamento della refezione, ma ripeto personalmente non l’ho mai fatto prima), restituirò il valore del tipo definito dall’utente .

MODIFICARE

In realtà il link fornito dai ragazzi nei commenti è buono:

Quando è un tipo non un tipo?