コード例 #1
0
        private static MethodReference CreateFuncCtorRef(Cut cut)
        {
            var mr = new MethodReference(".ctor", cut.Import(StandardTypes.Void), cut.Import(WellKnownTypes.Func_ObjectArray_Object))
            {
                HasThis = true
            };

            mr.Parameters.Add(new ParameterDefinition(cut.Import(StandardTypes.Object)));
            mr.Parameters.Add(new ParameterDefinition(cut.Import(StandardTypes.IntPtr)));
            return(mr);
        }
コード例 #2
0
        private static FieldReference GetInstanceAspectField(AspectDefinition aspect, TypeDefinition source, Cut cut)
        {
            var type = source;

            var fieldName = $"{Constants.AspectInstanceFieldPrefix}{aspect.Host.FullName}";

            var field = FindField(type, fieldName);

            if (field == null)
            {
                field = new FieldDefinition(fieldName, FieldAttributes.Family, cut.Import(aspect.Host));
                type.Fields.Add(field);

                InjectInitialization(GetInstanсeAspectsInitializer(type, cut), field, c => c.CreateAspectInstance(aspect));
            }

            return(field);
        }