2009-01-02 75 views
5

我有一個CLI/C++接口,我想通過.NET反射檢查。下面是在源代碼中的函數簽名:modopt和.NET反射

class ClassA; 
template<typename _Type> class ClassTempA; 

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

這裏的函數如下當.net反射檢查,如:

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

有沒有辦法讓在MODOPT通過.NET反射屬性,還是必須使用元數據 非託管API?

回答

7

您可以通過調用分別與ParameterInfo::GetOptionalCustomModifiers()ParameterInfo::GetRequiredCustomModifiers(),得到System.Reflectionmodoptmodreq信息。爲了說明您的類型,請參閱以下內容。

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(); 
}