IEnumerable <IMemberDef> CalculateDefsToRemove() { var defaultProp = FindDefaultProperty(); if (defaultProp is not null) { foreach (var d in DotNetUtils.GetMethodsAndSelf(defaultProp)) { yield return(d); } foreach (var d in DotNetUtils.GetDefs(defaultProp)) { yield return(d); } } foreach (var p in Type.Properties) { if (p.CustomAttributes.IsDefined("System.Configuration.DefaultSettingValueAttribute")) { foreach (var d in DotNetUtils.GetMethodsAndSelf(p)) { yield return(d); } } } }
void InitializeIsEmpty() { var allDefs = new HashSet <object>(); foreach (var m in Type.Methods) { allDefs.Add(m); } foreach (var f in Type.Fields) { allDefs.Add(f); } foreach (var p in Type.Properties) { allDefs.Add(p); } foreach (var e in Type.Events) { allDefs.Add(e); } foreach (var t in Type.NestedTypes) { allDefs.Add(t); } foreach (var d in GetDefsToRemove()) { allDefs.Remove(d); if (d is PropertyDef) { foreach (var def in DotNetUtils.GetMethodsAndSelf((PropertyDef)d)) { allDefs.Remove(def); } } } allDefs.Remove(Type.FindStaticConstructor()); allDefs.Remove(Type.FindDefaultConstructor()); isEmpty = allDefs.Count == 0; }