This code must create local variable and init it by Attribute object

        public static void EmitAttributeInitialization(this
CustomAttribute attribute, MethodDefinition m0)
        {
            var module  = m0.Module;
            var emitter = m0.Body.GetILProcessor();
            var _Attribute = attribute.AttributeType;

            var __attrContainer = m0.Body.AddVariable(_Attribute);
            var ins = m0.Body.Instructions[0];

            var ctor = (MethodDefinition)(from f in
_Attribute.Resolve().Methods
                               where f.IsConstructor && f.IsPublic
select f).First();

            emitter.InsertBefore(ins, emitter.Create(OpCodes.Newobj,
ctor));
            emitter.InsertBefore(ins, emitter.Create(OpCodes.Stloc,
__attrContainer));
...
     }

must create like this:

var lacalVar = new SomeAttribute();

But reflector crashes and reflexil shows Newobj without parameters.

-- 
--
mono-cecil

Reply via email to