using dnlib.DotNet; using Newtonsoft.Json; using ReCodeItLib.Enums; namespace ReCodeItLib.Models; /// /// Object to store linq statements in inside of json to search and remap classes /// public class RemapModel { [JsonIgnore] public bool Succeeded { get; set; } = false; [JsonIgnore] public List NoMatchReasons { get; set; } = []; [JsonIgnore] public string AmbiguousTypeMatch { get; set; } = string.Empty; /// /// This is a list of type candidates that made it through the filter /// [JsonIgnore] public HashSet TypeCandidates { get; set; } = []; /// /// This is the final chosen type we will use to remap /// [JsonIgnore] public TypeDef? TypePrimeCandidate { get; set; } public string NewTypeName { get; set; } = string.Empty; public string OriginalTypeName { get; set; } = string.Empty; public bool UseForceRename { get; set; } public bool? AutoGenerated { get; set; } = null; public SearchParams SearchParams { get; set; } = new(); } /// /// Search filters to find types and remap them /// public class SearchParams { public GenericParams GenericParams { get; set; } = new(); public MethodParams Methods { get; set; } = new(); public FieldParams Fields { get; set; } = new(); public PropertyParams Properties { get; set; } = new(); public NestedTypeParams NestedTypes { get; set; } = new(); public EventParams Events { get; set; } = new(); } public class GenericParams { public bool IsPublic { get; set; } = true; public bool? IsAbstract { get; set; } = null; public bool? IsInterface { get; set; } = null; public bool? IsStruct { get; set; } = null; public bool? IsEnum { get; set; } = null; public bool? IsSealed { get; set; } = null; public bool? HasAttribute { get; set; } = null; public bool? HasGenericParameters { get; set; } = null; public bool? IsDerived { get; set; } = null; /// /// Name of the derived classes declaring type /// public string? MatchBaseClass { get; set; } = null; } public class MethodParams { public int ConstructorParameterCount { get; set; } = -1; public int MethodCount { get; set; } = -1; public HashSet IncludeMethods { get; set; } = []; public HashSet ExcludeMethods { get; set; } = []; } public class FieldParams { public int FieldCount { get; set; } = -1; public HashSet IncludeFields { get; set; } = []; public HashSet ExcludeFields { get; set; } = []; } public class PropertyParams { public int PropertyCount { get; set; } = -1; public HashSet IncludeProperties { get; set; } = []; public HashSet ExcludeProperties { get; set; } = []; } public class NestedTypeParams { public bool IsNested { get; set; } public bool IsNestedAssembly { get; set; } public bool IsNestedFamily { get; set; } public bool IsNestedPrivate { get; set; } public bool IsNestedPublic { get; set; } public bool IsNestedFamilyAndAssembly { get; set; } public bool IsNestedFamilyOrAssembly { get; set; } /// /// Name of the nested types parent /// public string NestedTypeParentName { get; set; } = string.Empty; public int NestedTypeCount { get; set; } = -1; public HashSet IncludeNestedTypes { get; set; } = []; public HashSet ExcludeNestedTypes { get; set; } = []; } public class EventParams { public int EventCount { get; set; } = -1; public HashSet IncludeEvents { get; set; } = []; public HashSet ExcludeEvents { get; set; } = []; }