2015-06-08 10 views
13

Nie mogę w pełni zrozumieć, kiedy należy korzystać z tych samych. Są tak podobne, że dezorientują mnie teraz i one. Jeśli chodzi o refleksję, nie wiem, czy użyć zwykłego typu czy TypeInfo.Jaka jest różnica lub związek między Type i TypeInfo?

Sam system .NET Framework dodaje więcej zamieszania do rzeczy takich jak assembly.DefinedTypes. Wyszukuje IEnumerable<TypeInfo>, gdzie przypuszczam, że będzie to IEnumerable<Type>. Istnieje również metoda typeInfo.AsType(). Jakie jest tego znaczenie? czy są wymienne?

Co więcej, mają metody, które są bardzo podobne.

Wygląda na to, że TypeInfo jest jak mocniejsza wersja klasycznego Type. Czy się mylę?

Dzięki!

Odpowiedz

9

Z MSDN docs:

TypeInfo obiekt reprezentuje samą definicję typu, natomiast Rodzaj obiektu stanowi odniesienie do definicji typu. Uzyskanie obiektu TypeInfo zmusza zestaw zawierający ten typ do załadowania. Dla porównania obiektami typu można manipulować, niekoniecznie , wymagając, aby środowisko wykonawcze wczytało zespół, do którego się odwołują.

Tak więc Type zapewnia płytszą reprezentację danych obiektu, tj. Podając nazwę typu jako ciąg.

Gdzie jako TypeInfo zapewnia bogatszą reprezentację typu, w tym listy członków, zaimplementowane interfejsy i typ bazowy.

Różnice wyjaśniono bardziej szczegółowo here.

+2

Należy pamiętać, że zgodnie z https://blogs.msdn.microsoft.com/dotnet/2016/05/27/making-it-easier-to-port-to-net-core/ i http: // www. lifehacker.com.au/2016/05/microsoft-reconsiders-reflect-serialisation-changes-for-netcore/ to było ukierunkowane na rdzeń .Net, ale Microsoft odwrócił go na końcu. –

Powiązane problemy