Question

Je souhaite examiner une interface CLI / C ++ via .NET Reflection. Voici la signature de la fonction dans le code source:

class ClassA;
template<typename _Type> class ClassTempA;

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

Voici à quoi ressemble la fonction lorsqu'elle est examinée dans .NET Reflector:

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

Existe-t-il un moyen d'obtenir les attributs modopt via une réflexion .NET ou dois-je utiliser les métadonnées API non gérée?

Était-ce utile?

La solution

Vous pouvez obtenir les informations modopt et modreq auprès de System.Reflection en appelant ParameterInfo :: GetOptionalCustomModifiers () et ParameterInfo :: GetRequiredCustomModifiers () , respectivement. Pour illustrer vos types, voir ce qui suit.

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();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top