Model: Small naming corrections to improve reliability (re: CS0308)

This commit is contained in:
Katy Coe
2019-11-29 06:51:30 +01:00
parent 022d6db74a
commit b36ccda9b9
6 changed files with 319 additions and 162 deletions

View File

@@ -59,13 +59,13 @@ namespace Il2CppInspector.Reflection
// Explicit interface implementation
: (IsVirtual && IsFinal && (Attributes & MethodAttributes.VtableLayoutMask) == MethodAttributes.NewSlot && Name.IndexOf('.') != -1)?
((Func<string>)(() => {
// This is some shenanigans because IL2CPP does not use a consistent naming scheme for explicit interface implementation method names
var implementingInterface = DeclaringType.ImplementedInterfaces.FirstOrDefault(i => Name.StartsWith(i.Namespace + "." + i.CSharpName + "."))
?? DeclaringType.ImplementedInterfaces.FirstOrDefault(i => Name.StartsWith(Regex.Replace(i.FullName, @"`\d", "").Replace('[', '<').Replace(']', '>') + "."));
?? DeclaringType.ImplementedInterfaces.FirstOrDefault(i => Name.StartsWith(i.Namespace + "." + i.CSharpTypeDeclarationName.Replace(" ", "") + "."));
// TODO: There are some combinations we haven't dealt with so use this test as a safety valve
if (implementingInterface == null)
return Name;
var sliceLength = Regex.Replace(implementingInterface.FullName, @"`\d", "").Length + 1;
return implementingInterface.CSharpName + "." + Name.Substring(sliceLength);
return implementingInterface.CSharpName + Name.Substring(Name.LastIndexOf('.'));
}))()
// Regular method

View File

@@ -72,7 +72,7 @@ namespace Il2CppInspector.Reflection {
+ (base.Name.IndexOf("`", StringComparison.Ordinal) == -1 ? base.Name : base.Name.Remove(base.Name.IndexOf("`", StringComparison.Ordinal)))
+ ((IsNested? GenericTypeParameters?.Where(p => DeclaringType.GenericTypeParameters?.All(dp => dp.Name != p.Name) ?? true) : GenericTypeParameters)?.Any() ?? false?
"<" + string.Join(", ", GenericTypeParameters.Select(x => x.CSharpTypeDeclarationName)) + ">" : "")
+ (GenericTypeArguments != null ? "<" + string.Join(", ", GenericTypeArguments.Select(x => x.CSharpTypeDeclarationName)) + ">" : ""))
+ (GenericTypeArguments != null ? "<" + string.Join(", ", GenericTypeArguments.Select(x => (!x.IsGenericTypeParameter? x.Namespace + "." : "") + x.CSharpTypeDeclarationName)) + ">" : ""))
+ (IsArray ? "[" + new string(',', GetArrayRank() - 1) + "]" : "")
+ (IsPointer ? "*" : "");
@@ -146,9 +146,7 @@ namespace Il2CppInspector.Reflection {
IsGenericParameter? null :
(HasElementType? ElementType.FullName :
(DeclaringType != null? DeclaringType.FullName + "+" : Namespace + (Namespace.Length > 0? "." : ""))
+ base.Name
+ (GenericTypeParameters != null ? "[" + string.Join(",", GenericTypeParameters.Select(x => x.FullName ?? x.Name)) + "]" : "")
+ (GenericTypeArguments != null ? "[" + string.Join(",", GenericTypeArguments.Select(x => x.FullName ?? x.Name)) + "]" : ""))
+ base.Name)
+ (IsArray? "[" + new string(',', GetArrayRank() - 1) + "]" : "")
+ (IsPointer? "*" : "");

View File

@@ -33,7 +33,7 @@ using System.Runtime.InteropServices;
[assembly: StringFreezing] // 0x000000018000E050-0x000000018000A8A0
// [assembly: TypeLibVersion] // 0x000000018000E050-0x000000018000A8A0
// Image 1: GenericTypes.dll - Assembly: GenericTypes, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1827
// Image 1: GenericTypes.dll - Assembly: GenericTypes, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1832
// [assembly: CompilationRelaxations] // 0x000000018000C150-0x000000018000C150
// [assembly: Debuggable] // 0x000000018000C150-0x000000018000C150
[assembly: RuntimeCompatibility] // 0x000000018000C150-0x000000018000C150
@@ -41,45 +41,45 @@ using System.Runtime.InteropServices;
internal static class Consts // TypeDefIndex: 100
{
// Fields
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECED8
public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECEE3
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECEFC
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECF23
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECF3F
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECF4A
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECF55
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECF67
public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECF79
public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECFC4
public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED021
public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED082
public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED0DD
public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED12D
public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED17E
public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED1D2
public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED230
public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED27F
public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED2CC
public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED31E
public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED372
public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED3D1
public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED426
public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED482
public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED4D9
public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED52F
public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED58B
public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED5DC
public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED637
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ED0B4
public const string MonoCompany = "MONO development team"; // Metadata: 0x000ED0BF
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ED0D8
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ED0FF
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ED11B
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ED126
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ED131
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ED143
public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED155
public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1A0
public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1FD
public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED25E
public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED2B9
public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED309
public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED35A
public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED3AE
public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED40C
public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED45B
public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED4A8
public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED4FA
public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED54E
public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED5AD
public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED602
public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED65E
public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED6B5
public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED70B
public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED767
public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED7B8
public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED813
}
internal sealed class Locale // TypeDefIndex: 101
{
// Constructors
private Locale() {} // 0x00000001800E2000-0x00000001800E2010
private Locale() {} // 0x00000001800E3000-0x00000001800E3010
// Methods
public static string GetText(string msg) => default; // 0x0000000180123590-0x00000001801235A0
public static string GetText(string fmt, params /* 0x00000001800090D0-0x00000001800090D0 */ object[] args) => default; // 0x00000001802C6900-0x00000001802C6970
public static string GetText(string msg) => default; // 0x0000000180124590-0x00000001801245A0
public static string GetText(string fmt, params /* 0x00000001800090D0-0x00000001800090D0 */ object[] args) => default; // 0x00000001802C5BB0-0x00000001802C5C20
}
namespace Il2CppTests.TestSources
@@ -115,10 +115,10 @@ namespace Il2CppTests.TestSources
internal class Test // TypeDefIndex: 1819
{
// Constructors
public Test() {} // 0x00000001800E2000-0x00000001800E2010
public Test() {} // 0x00000001800E3000-0x00000001800E3010
// Methods
public void GenericTypesTest() {} // 0x00000001803E11C0-0x00000001803E11C0
public void GenericTypesTest() {} // 0x00000001803EDC60-0x00000001803EDC60
}
internal class ConstrainedValueType<V> // TypeDefIndex: 1820
@@ -183,4 +183,49 @@ namespace Il2CppTests.TestSources
public void EnumConstraint<E>(E enumeration)
where E : Enum {}
}
public class OuterGeneric<T1, T2> // TypeDefIndex: 1828
{
// Fields
public InnerGeneric1 fieldOfInnerGeneric1; // 0x00
public InnerGeneric2 fieldOfInnerGeneric2; // 0x00
public OuterGeneric<T1, float> fieldOfOuterGenericOpen1; // 0x00
public OuterGeneric<int, T2> fieldOfOuterGenericOpen2; // 0x00
public OuterGeneric<int, float> fieldOfOuterGenericClosed; // 0x00
public InnerGeneric2.SubInnerGeneric2 fieldOfSubInnerGeneric2; // 0x00
public InnerGeneric2.SubInnerGeneric3<string> fieldOfSubInnerGeneric3; // 0x00
// Nested types
public class InnerGeneric1 : List<T1> // TypeDefIndex: 1829
{
// Constructors
public InnerGeneric1() {}
}
public class InnerGeneric2 : List<T2> // TypeDefIndex: 1830
{
// Nested types
public class SubInnerGeneric2 : List<T2> // TypeDefIndex: 1831
{
// Constructors
public SubInnerGeneric2() {}
}
public class SubInnerGeneric3<T1, T2, V> // TypeDefIndex: 1832
{
// Constructors
public SubInnerGeneric3() {}
}
// Constructors
public InnerGeneric2() {}
// Methods
public SubInnerGeneric2 Test() => default;
public SubInnerGeneric3<int> Test2() => default;
}
// Constructors
public OuterGeneric() {}
}
}

View File

@@ -11,75 +11,75 @@ using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Image 0: mscorlib.dll - Assembly: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Types 0-1809
// [assembly: AssemblyCompany] // 0x1000ED00-0x1000BC80
// [assembly: AssemblyCopyright] // 0x1000ED00-0x1000BC80
// [assembly: AssemblyDefaultAlias] // 0x1000ED00-0x1000BC80
// [assembly: AssemblyDelaySign] // 0x1000ED00-0x1000BC80
// [assembly: AssemblyDescription] // 0x1000ED00-0x1000BC80
// [assembly: AssemblyFileVersion] // 0x1000ED00-0x1000BC80
// [assembly: AssemblyInformationalVersion] // 0x1000ED00-0x1000BC80
// [assembly: AssemblyKeyFile] // 0x1000ED00-0x1000BC80
// [assembly: AssemblyProduct] // 0x1000ED00-0x1000BC80
// [assembly: AssemblyTitle] // 0x1000ED00-0x1000BC80
// [assembly: CLSCompliant] // 0x1000ED00-0x1000BC80
// [assembly: CompilationRelaxations] // 0x1000ED00-0x1000BC80
// [assembly: ComVisible] // 0x1000ED00-0x1000BC80
// [assembly: Debuggable] // 0x1000ED00-0x1000BC80
// [assembly: DefaultDependency] // 0x1000ED00-0x1000BC80
// [assembly: Guid] // 0x1000ED00-0x1000BC80
// [assembly: NeutralResourcesLanguage] // 0x1000ED00-0x1000BC80
[assembly: RuntimeCompatibility] // 0x1000ED00-0x1000BC80
// [assembly: SatelliteContractVersion] // 0x1000ED00-0x1000BC80
[assembly: StringFreezing] // 0x1000ED00-0x1000BC80
// [assembly: TypeLibVersion] // 0x1000ED00-0x1000BC80
// [assembly: AssemblyCompany] // 0x1000ED70-0x1000BCE0
// [assembly: AssemblyCopyright] // 0x1000ED70-0x1000BCE0
// [assembly: AssemblyDefaultAlias] // 0x1000ED70-0x1000BCE0
// [assembly: AssemblyDelaySign] // 0x1000ED70-0x1000BCE0
// [assembly: AssemblyDescription] // 0x1000ED70-0x1000BCE0
// [assembly: AssemblyFileVersion] // 0x1000ED70-0x1000BCE0
// [assembly: AssemblyInformationalVersion] // 0x1000ED70-0x1000BCE0
// [assembly: AssemblyKeyFile] // 0x1000ED70-0x1000BCE0
// [assembly: AssemblyProduct] // 0x1000ED70-0x1000BCE0
// [assembly: AssemblyTitle] // 0x1000ED70-0x1000BCE0
// [assembly: CLSCompliant] // 0x1000ED70-0x1000BCE0
// [assembly: CompilationRelaxations] // 0x1000ED70-0x1000BCE0
// [assembly: ComVisible] // 0x1000ED70-0x1000BCE0
// [assembly: Debuggable] // 0x1000ED70-0x1000BCE0
// [assembly: DefaultDependency] // 0x1000ED70-0x1000BCE0
// [assembly: Guid] // 0x1000ED70-0x1000BCE0
// [assembly: NeutralResourcesLanguage] // 0x1000ED70-0x1000BCE0
[assembly: RuntimeCompatibility] // 0x1000ED70-0x1000BCE0
// [assembly: SatelliteContractVersion] // 0x1000ED70-0x1000BCE0
[assembly: StringFreezing] // 0x1000ED70-0x1000BCE0
// [assembly: TypeLibVersion] // 0x1000ED70-0x1000BCE0
// Image 1: GenericTypes.dll - Assembly: GenericTypes, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1827
// [assembly: CompilationRelaxations] // 0x1000D1B0-0x1000D1B0
// [assembly: Debuggable] // 0x1000D1B0-0x1000D1B0
[assembly: RuntimeCompatibility] // 0x1000D1B0-0x1000D1B0
// Image 1: GenericTypes.dll - Assembly: GenericTypes, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1832
// [assembly: CompilationRelaxations] // 0x1000D210-0x1000D210
// [assembly: Debuggable] // 0x1000D210-0x1000D210
[assembly: RuntimeCompatibility] // 0x1000D210-0x1000D210
internal static class Consts // TypeDefIndex: 100
{
// Fields
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECED8
public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECEE3
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECEFC
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECF23
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECF3F
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECF4A
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECF55
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECF67
public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECF79
public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECFC4
public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED021
public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED082
public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED0DD
public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED12D
public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED17E
public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED1D2
public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED230
public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED27F
public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED2CC
public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED31E
public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED372
public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED3D1
public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED426
public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED482
public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED4D9
public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED52F
public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED58B
public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED5DC
public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED637
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ED0B4
public const string MonoCompany = "MONO development team"; // Metadata: 0x000ED0BF
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ED0D8
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ED0FF
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ED11B
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ED126
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ED131
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ED143
public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED155
public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1A0
public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1FD
public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED25E
public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED2B9
public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED309
public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED35A
public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED3AE
public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED40C
public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED45B
public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED4A8
public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED4FA
public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED54E
public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED5AD
public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED602
public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED65E
public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED6B5
public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED70B
public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED767
public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED7B8
public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED813
}
internal sealed class Locale // TypeDefIndex: 101
{
// Constructors
private Locale() {} // 0x100BF000-0x100BF010
private Locale() {} // 0x100C0000-0x100C0010
// Methods
public static string GetText(string msg) => default; // 0x100F7810-0x100F7820
public static string GetText(string fmt, params /* 0x10009B20-0x10009B20 */ object[] args) => default; // 0x10261460-0x102614B0
public static string GetText(string msg) => default; // 0x100F8810-0x100F8820
public static string GetText(string fmt, params /* 0x10009B80-0x10009B80 */ object[] args) => default; // 0x10261620-0x10261670
}
namespace Il2CppTests.TestSources
@@ -115,10 +115,10 @@ namespace Il2CppTests.TestSources
internal class Test // TypeDefIndex: 1819
{
// Constructors
public Test() {} // 0x100BF000-0x100BF010
public Test() {} // 0x100C0000-0x100C0010
// Methods
public void GenericTypesTest() {} // 0x1034DA60-0x1034DA60
public void GenericTypesTest() {} // 0x103584B0-0x103584B0
}
internal class ConstrainedValueType<V> // TypeDefIndex: 1820
@@ -169,7 +169,7 @@ namespace Il2CppTests.TestSources
public ConstrainedRefType() {}
// Methods
// [NullableContext] // 0x10009AA0-0x1000D1B0
// [NullableContext] // 0x10009B00-0x1000D210
public void ConstrainedMethodNotNull<N>(N notnullArgument, R bar) {}
public void ConstrainedUnmanaged<U>(U unmanagedArgument)
where U : struct {}
@@ -183,4 +183,49 @@ namespace Il2CppTests.TestSources
public void EnumConstraint<E>(E enumeration)
where E : Enum {}
}
public class OuterGeneric<T1, T2> // TypeDefIndex: 1828
{
// Fields
public InnerGeneric1 fieldOfInnerGeneric1; // 0x00
public InnerGeneric2 fieldOfInnerGeneric2; // 0x00
public OuterGeneric<T1, float> fieldOfOuterGenericOpen1; // 0x00
public OuterGeneric<int, T2> fieldOfOuterGenericOpen2; // 0x00
public OuterGeneric<int, float> fieldOfOuterGenericClosed; // 0x00
public InnerGeneric2.SubInnerGeneric2 fieldOfSubInnerGeneric2; // 0x00
public InnerGeneric2.SubInnerGeneric3<string> fieldOfSubInnerGeneric3; // 0x00
// Nested types
public class InnerGeneric1 : List<T1> // TypeDefIndex: 1829
{
// Constructors
public InnerGeneric1() {}
}
public class InnerGeneric2 : List<T2> // TypeDefIndex: 1830
{
// Nested types
public class SubInnerGeneric2 : List<T2> // TypeDefIndex: 1831
{
// Constructors
public SubInnerGeneric2() {}
}
public class SubInnerGeneric3<T1, T2, V> // TypeDefIndex: 1832
{
// Constructors
public SubInnerGeneric3() {}
}
// Constructors
public InnerGeneric2() {}
// Methods
public SubInnerGeneric2 Test() => default;
public SubInnerGeneric3<int> Test2() => default;
}
// Constructors
public OuterGeneric() {}
}
}

View File

@@ -11,75 +11,75 @@ using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Image 0: mscorlib.dll - Assembly: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Types 0-1809
// [assembly: AssemblyCompany] // 0x000A5524-0x000A5818
// [assembly: AssemblyCopyright] // 0x000A5524-0x000A5818
// [assembly: AssemblyDefaultAlias] // 0x000A5524-0x000A5818
// [assembly: AssemblyDelaySign] // 0x000A5524-0x000A5818
// [assembly: AssemblyDescription] // 0x000A5524-0x000A5818
// [assembly: AssemblyFileVersion] // 0x000A5524-0x000A5818
// [assembly: AssemblyInformationalVersion] // 0x000A5524-0x000A5818
// [assembly: AssemblyKeyFile] // 0x000A5524-0x000A5818
// [assembly: AssemblyProduct] // 0x000A5524-0x000A5818
// [assembly: AssemblyTitle] // 0x000A5524-0x000A5818
// [assembly: CLSCompliant] // 0x000A5524-0x000A5818
// [assembly: CompilationRelaxations] // 0x000A5524-0x000A5818
// [assembly: ComVisible] // 0x000A5524-0x000A5818
// [assembly: Debuggable] // 0x000A5524-0x000A5818
// [assembly: DefaultDependency] // 0x000A5524-0x000A5818
// [assembly: Guid] // 0x000A5524-0x000A5818
// [assembly: NeutralResourcesLanguage] // 0x000A5524-0x000A5818
[assembly: RuntimeCompatibility] // 0x000A5524-0x000A5818
// [assembly: SatelliteContractVersion] // 0x000A5524-0x000A5818
[assembly: StringFreezing] // 0x000A5524-0x000A5818
// [assembly: TypeLibVersion] // 0x000A5524-0x000A5818
// [assembly: AssemblyCompany] // 0x000A795C-0x000A7C50
// [assembly: AssemblyCopyright] // 0x000A795C-0x000A7C50
// [assembly: AssemblyDefaultAlias] // 0x000A795C-0x000A7C50
// [assembly: AssemblyDelaySign] // 0x000A795C-0x000A7C50
// [assembly: AssemblyDescription] // 0x000A795C-0x000A7C50
// [assembly: AssemblyFileVersion] // 0x000A795C-0x000A7C50
// [assembly: AssemblyInformationalVersion] // 0x000A795C-0x000A7C50
// [assembly: AssemblyKeyFile] // 0x000A795C-0x000A7C50
// [assembly: AssemblyProduct] // 0x000A795C-0x000A7C50
// [assembly: AssemblyTitle] // 0x000A795C-0x000A7C50
// [assembly: CLSCompliant] // 0x000A795C-0x000A7C50
// [assembly: CompilationRelaxations] // 0x000A795C-0x000A7C50
// [assembly: ComVisible] // 0x000A795C-0x000A7C50
// [assembly: Debuggable] // 0x000A795C-0x000A7C50
// [assembly: DefaultDependency] // 0x000A795C-0x000A7C50
// [assembly: Guid] // 0x000A795C-0x000A7C50
// [assembly: NeutralResourcesLanguage] // 0x000A795C-0x000A7C50
[assembly: RuntimeCompatibility] // 0x000A795C-0x000A7C50
// [assembly: SatelliteContractVersion] // 0x000A795C-0x000A7C50
[assembly: StringFreezing] // 0x000A795C-0x000A7C50
// [assembly: TypeLibVersion] // 0x000A795C-0x000A7C50
// Image 1: GenericTypes.dll - Assembly: GenericTypes, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1827
// [assembly: CompilationRelaxations] // 0x000A592C-0x000A592C
// [assembly: Debuggable] // 0x000A592C-0x000A592C
[assembly: RuntimeCompatibility] // 0x000A592C-0x000A592C
// Image 1: GenericTypes.dll - Assembly: GenericTypes, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1832
// [assembly: CompilationRelaxations] // 0x000A7D64-0x000A7D64
// [assembly: Debuggable] // 0x000A7D64-0x000A7D64
[assembly: RuntimeCompatibility] // 0x000A7D64-0x000A7D64
internal static class Consts // TypeDefIndex: 100
{
// Fields
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECED8
public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECEE3
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECEFC
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECF23
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECF3F
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECF4A
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECF55
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECF67
public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECF79
public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECFC4
public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED021
public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED082
public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED0DD
public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED12D
public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED17E
public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED1D2
public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED230
public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED27F
public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED2CC
public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED31E
public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED372
public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED3D1
public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED426
public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED482
public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED4D9
public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED52F
public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED58B
public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED5DC
public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED637
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ED0B4
public const string MonoCompany = "MONO development team"; // Metadata: 0x000ED0BF
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ED0D8
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ED0FF
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ED11B
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ED126
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ED131
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ED143
public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED155
public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1A0
public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1FD
public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED25E
public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED2B9
public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED309
public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED35A
public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED3AE
public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED40C
public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED45B
public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED4A8
public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED4FA
public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED54E
public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED5AD
public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED602
public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED65E
public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED6B5
public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED70B
public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED767
public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED7B8
public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED813
}
internal sealed class Locale // TypeDefIndex: 101
{
// Constructors
private Locale() {} // 0x003ED1B0-0x003ED1B8
private Locale() {} // 0x003ED908-0x003ED910
// Methods
public static string GetText(string msg) => default; // 0x003ED1B8-0x003ED1BC
public static string GetText(string fmt, params /* 0x000A3D50-0x000A3D60 */ object[] args) => default; // 0x003ED1BC-0x003ED248
public static string GetText(string msg) => default; // 0x003ED910-0x003ED914
public static string GetText(string fmt, params /* 0x000A6188-0x000A6198 */ object[] args) => default; // 0x003ED914-0x003ED9A0
}
namespace Il2CppTests.TestSources
@@ -115,10 +115,10 @@ namespace Il2CppTests.TestSources
internal class Test // TypeDefIndex: 1819
{
// Constructors
public Test() {} // 0x00561F04-0x00561F0C
public Test() {} // 0x0057AFD8-0x0057AFE0
// Methods
public void GenericTypesTest() {} // 0x00561D48-0x00561F04
public void GenericTypesTest() {} // 0x0057AE1C-0x0057AFD8
}
internal class ConstrainedValueType<V> // TypeDefIndex: 1820
@@ -169,7 +169,7 @@ namespace Il2CppTests.TestSources
public ConstrainedRefType() {}
// Methods
// [NullableContext] // 0x000A5918-0x000A592C
// [NullableContext] // 0x000A7D50-0x000A7D64
public void ConstrainedMethodNotNull<N>(N notnullArgument, R bar) {}
public void ConstrainedUnmanaged<U>(U unmanagedArgument)
where U : struct {}
@@ -183,4 +183,49 @@ namespace Il2CppTests.TestSources
public void EnumConstraint<E>(E enumeration)
where E : Enum {}
}
public class OuterGeneric<T1, T2> // TypeDefIndex: 1828
{
// Fields
public InnerGeneric1 fieldOfInnerGeneric1; // 0x00
public InnerGeneric2 fieldOfInnerGeneric2; // 0x00
public OuterGeneric<T1, float> fieldOfOuterGenericOpen1; // 0x00
public OuterGeneric<int, T2> fieldOfOuterGenericOpen2; // 0x00
public OuterGeneric<int, float> fieldOfOuterGenericClosed; // 0x00
public InnerGeneric2.SubInnerGeneric2 fieldOfSubInnerGeneric2; // 0x00
public InnerGeneric2.SubInnerGeneric3<string> fieldOfSubInnerGeneric3; // 0x00
// Nested types
public class InnerGeneric1 : List<T1> // TypeDefIndex: 1829
{
// Constructors
public InnerGeneric1() {}
}
public class InnerGeneric2 : List<T2> // TypeDefIndex: 1830
{
// Nested types
public class SubInnerGeneric2 : List<T2> // TypeDefIndex: 1831
{
// Constructors
public SubInnerGeneric2() {}
}
public class SubInnerGeneric3<T1, T2, V> // TypeDefIndex: 1832
{
// Constructors
public SubInnerGeneric3() {}
}
// Constructors
public InnerGeneric2() {}
// Methods
public SubInnerGeneric2 Test() => default;
public SubInnerGeneric3<int> Test2() => default;
}
// Constructors
public OuterGeneric() {}
}
}

View File

@@ -87,4 +87,28 @@ namespace Il2CppTests.TestSources
private delegate void NestedDelegateWithAutomaticConstraints();
}
// Nested generic types should not be referenced using outer type parameters
public class OuterGeneric<T1, T2> {
public class InnerGeneric1 : List<T1> {}
public class InnerGeneric2 : List<T2>
{
public class SubInnerGeneric2 : List<T2> {}
public class SubInnerGeneric3<V> {}
public SubInnerGeneric2 Test() => default;
public SubInnerGeneric3<int> Test2() => default;
}
public InnerGeneric1 fieldOfInnerGeneric1;
public InnerGeneric2 fieldOfInnerGeneric2;
public OuterGeneric<T1, float> fieldOfOuterGenericOpen1;
public OuterGeneric<int, T2> fieldOfOuterGenericOpen2;
public OuterGeneric<int, float> fieldOfOuterGenericClosed;
public InnerGeneric2.SubInnerGeneric2 fieldOfSubInnerGeneric2;
public InnerGeneric2.SubInnerGeneric3<string> fieldOfSubInnerGeneric3;
}
}