Domanda

Ho un'interfaccia CLI / C ++ che voglio esaminare tramite .NET Reflection. Ecco la firma della funzione nel codice sorgente:

class ClassA;
template<typename _Type> class ClassTempA;

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

Ecco come appare la funzione quando esaminata in .NET Reflector:

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

Esiste un modo per ottenere gli attributi modopt tramite la riflessione .NET oppure devo usare i metadati API non gestite?

È stato utile?

Soluzione

Puoi ottenere le informazioni modopt e modreq da System.Reflection chiamando ParameterInfo :: GetOptionalCustomModifiers () e ParameterInfo :: GetRequiredCustomModifiers () , rispettivamente. Per illustrare con i tuoi tipi, vedi quanto segue.

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();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top