2009-01-02 15 views
5

Ich habe eine CLI/C++ - Schnittstelle, die ich über .NET Reflection untersuchen möchte. Hier ist die Funktion Signatur im Quellcode:modopt und .NET reflection

class ClassA; 
template<typename _Type> class ClassTempA; 

public interface class Test : BaseFunc { 
public: 
    ClassTempA<int>& SomeFunc2(ClassA inst) = 0; 
}; 

Hier ist, was die Funktion aussieht, wenn in .NET Reflector sucht:

unsafe ClassTempA<int>* modopt(IsImplicitlyDereferenced) SomeFunc2(ClassA inst); 

Gibt es eine Möglichkeit an der modopt zu bekommen Attribute über .NET Reflexion oder muss ich die Metadaten Unmanaged API verwenden?

Antwort

7

Sie können die modopt und modreq Infos von System.Reflection erhalten, indem ParameterInfo::GetOptionalCustomModifiers() und ParameterInfo::GetRequiredCustomModifiers() Aufruf sind. Beziehen Sie sich zur Veranschaulichung mit Ihren Typen auf Folgendes.

class ClassA; 
template<typename _Type> class ClassTempA; 

public interface class Test : BaseFunc { 
public: 
    ClassTempA<int>& SomeFunc2(ClassA inst) = 0; 
}; 

array<Type^>^ GetModifiers() 
{ 
    MethodInfo^ SomeFunc2 = Test::typeid->GetMethod("SomeFunc2"); 
    return method->ReturnParameter->GetOptionalCustomModifiers(); 
}