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