Отражение: Как получить базовый тип типа by-ref - PullRequest
8 голосов
/ 13 июня 2010

Я был удивлен, узнав, что параметры "ref" и "out" не отмечены специальным атрибутом, несмотря на существование ParameterInfo.IsOut, ParameterInfo.IsIn (оба из которых, насколько я вижу, всегда ложны), ParameterAttributes.In и ParameterAttributes.Out.Вместо этого параметры «ref» фактически представлены особым видом объекта «Тип», а параметры «out» - это просто параметры ref с дополнительным атрибутом (какого типа атрибут я еще не знаю).

В любом случае, чтобы создать аргумент by-ref, вы вызываете Type.MakeByRefType (), но у меня вопрос: если у вас уже есть тип by-ref, как вы вернетесь к исходному типу?

Подсказка: это не UnderlyingSystemType:

Type t = typeof(int);
Console.WriteLine(t.MakeByRefType().UnderlyingSystemType==t); // FALSE

1 Ответ

13 голосов
/ 14 июня 2010

Звоните GetElementType().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...