CS: Don't output redundant interfaces in type declarations
This commit is contained in:
@@ -578,7 +578,7 @@ namespace Il2CppInspector.Outputs
|
|||||||
|
|
||||||
sb.Append(prefix + type.GetModifierString());
|
sb.Append(prefix + type.GetModifierString());
|
||||||
|
|
||||||
var @base = type.ImplementedInterfaces.Select(x => x.GetScopedCSharpName(scope, isPartOfTypeDeclaration: true)).ToList();
|
var @base = type.NonInheritedInterfaces.Select(x => x.GetScopedCSharpName(scope, isPartOfTypeDeclaration: true)).ToList();
|
||||||
if (type.BaseType != null && type.BaseType.FullName != "System.Object" && type.BaseType.FullName != "System.ValueType" && !type.IsEnum)
|
if (type.BaseType != null && type.BaseType.FullName != "System.Object" && type.BaseType.FullName != "System.ValueType" && !type.IsEnum)
|
||||||
@base.Insert(0, type.BaseType.GetScopedCSharpName(scope, isPartOfTypeDeclaration: true));
|
@base.Insert(0, type.BaseType.GetScopedCSharpName(scope, isPartOfTypeDeclaration: true));
|
||||||
if (type.IsEnum && type.GetEnumUnderlyingType().FullName != "System.Int32") // enums derive from int by default
|
if (type.IsEnum && type.GetEnumUnderlyingType().FullName != "System.Int32") // enums derive from int by default
|
||||||
|
|||||||
@@ -654,6 +654,9 @@ namespace Il2CppInspector.Reflection
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get only interfaces not inherited from base interfaces
|
||||||
|
public IEnumerable<TypeInfo> NonInheritedInterfaces => ImplementedInterfaces.Except(ImplementedInterfaces.SelectMany(t => t.ImplementedInterfaces));
|
||||||
|
|
||||||
public bool IsAbstract => (Attributes & TypeAttributes.Abstract) == TypeAttributes.Abstract;
|
public bool IsAbstract => (Attributes & TypeAttributes.Abstract) == TypeAttributes.Abstract;
|
||||||
public bool IsArray { get; }
|
public bool IsArray { get; }
|
||||||
public bool IsByRef { get; }
|
public bool IsByRef { get; }
|
||||||
|
|||||||
Reference in New Issue
Block a user