Hey, On Fri, Dec 3, 2010 at 12:56 PM, Stanislav <[email protected]> wrote: > 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));
You need to use: emitter.Create (OpCodes.Newobj, module.Import (ctor)); If the attribute is defined in another module. Jb -- -- mono-cecil
