2010-06-13 7 views
5

Byłem zaskoczony, gdy dowiedziałem się, że parametry "ref" i "out" nie są oznaczone specjalnym atrybutem, pomimo istnienia parametru ParameterInfo.IsOut, ParameterInfo.IsIn (oba są zawsze fałszywe, o ile widzę), ParameterAttributes.In i ParameterAttributes.Out. Zamiast tego, parametry "ref" są faktycznie reprezentowane przez specjalny rodzaj obiektu "Type", a parametry "out" to tylko parametry ref z dodatkowym atrybutem (jakiego rodzaju atrybut jeszcze nie znam).Odbicie: Jak uzyskać podstawowy typ typu by-ref

W każdym razie, aby wprowadzić argument-po-odnowie, należy wywołać Type.MakeByRefType(), ale moje pytanie brzmi, jeśli już posiadasz typ "by-ref", jak wrócić do oryginalnego Type?

Podpowiedź: to nie UnderlyingSystemType:

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

Odpowiedz

Powiązane problemy