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; }
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; }