2009-01-02 13 views
5

मेरे पास एक सीएलआई/सी ++ इंटरफ़ेस है जिसे मैं .NET प्रतिबिंब के माध्यम से जांचना चाहता हूं।मोडोपेट और .NET प्रतिबिंब

class ClassA; 
template<typename _Type> class ClassTempA; 

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

यहाँ समारोह जब नेट परावर्तक से जांच की तरह दिखता है:: यहाँ स्रोत कोड में समारोह हस्ताक्षर है

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

वहाँ एक रास्ता modopt पर प्राप्त करने के लिए है नेट प्रतिबिंब के माध्यम से जिम्मेदार बताते हैं , या मुझे मेटाडाटा अप्रबंधित API का उपयोग करना है?

उत्तर

7

आप क्रमश: ParameterInfo::GetOptionalCustomModifiers() और ParameterInfo::GetRequiredCustomModifiers(), फोन करके System.Reflection से modopt और modreq की जानकारी प्राप्त कर सकते हैं। अपने प्रकार के साथ उदाहरण के लिए, निम्नलिखित देखें।

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(); 
} 
संबंधित मुद्दे