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);
返回属性丢失:(任何想法如何实现正确的行为?
在此先感谢