riflessione modopt e .NET
-
03-07-2019 - |
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?
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