2009-01-02 92 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(); 
}