2011-05-04 86 views
1

我通过System.Reflection.Emit定义了一些类型。想象一下,我想有方法的签名与一些自定义属性,像这样:System.Reflection.Emit - 如何将属性添加到返回类型定义?

[return: MyAttr] 
MyType MethodName([MyOtherAttr] MyOtherType); 

我用这样的代码来生成它:

TypeBuilder t = assembly.DefineType(...); 

MethodAttributes methodAttr = MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.NewSlot; 
MethodBuilder method = t.DefineMethod("MethodName", methodAttr, typeof(MyType), new Type[] { typeof(MyOtherType) }); 
method.SetImplementationFlags(MethodImplAttributes.Runtime | MethodImplAttributes.Managed); 

// return type 
ParameterBuilder pbr = method.DefineParameter(0, ParameterAttributes.Retval, null); 
CustomAttributeBuilder cabr = GetMyAttrBuilder(); 
pbr.SetCustomAttribute(cabr); 

// parameter 
ParameterBuilder pbp = method.DefineParameter(1, ParameterAttributes.None, null); 
CustomAttributeBuilder cabp = GetMyOtherAttrBuilder(); 
pbp.SetCustomAttribute(cabp); 

t.CreateType(); 

但是生成的方法签名是:

MyType MethodName([MyOtherAttr] MyOtherType); 

返回属性丢失:(任何想法如何实现正确的行为?

在此先感谢

回答

1

此问题的代码运行良好只是C#反汇编程序不显示它,如果一个人。

相关问题