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