Esempio n. 1
0
        MPropertyDef createProperty(MTypeDef ownerType, string name, TypeSig propType, MethodDef getter, MethodDef setter)
        {
            if (string.IsNullOrEmpty(name) || propType.ElementType == ElementType.Void)
                return null;
            var newSig = createPropertySig(getter, propType, true) ?? createPropertySig(setter, propType, false);
            if (newSig == null)
                return null;
            var newProp = ownerType.Module.ModuleDefMD.UpdateRowId(new PropertyDefUser(name, newSig, 0));
            newProp.GetMethod = getter;
            newProp.SetMethod = setter;
            var propDef = ownerType.findAny(newProp);
            if (propDef != null)
                return propDef;

            propDef = ownerType.create(newProp);
            memberInfos.add(propDef);
            if (isVerbose)
                Logger.v("Restoring property: {0}", Utils.removeNewlines(newProp));
            return propDef;
        }
Esempio n. 2
0
        MEventDef createEvent(MTypeDef ownerType, string name, TypeSig eventType)
        {
            if (string.IsNullOrEmpty(name) || eventType == null || eventType.ElementType == ElementType.Void)
                return null;
            var newEvent = ownerType.Module.ModuleDefMD.UpdateRowId(new EventDefUser(name, eventType.ToTypeDefOrRef(), 0));
            var eventDef = ownerType.findAny(newEvent);
            if (eventDef != null)
                return eventDef;

            eventDef = ownerType.create(newEvent);
            memberInfos.add(eventDef);
            if (isVerbose)
                Logger.v("Restoring event: {0}", Utils.removeNewlines(newEvent));
            return eventDef;
        }