From 68d8e47d7ddec465b01236dc8b7c63ba82984dae Mon Sep 17 00:00:00 2001 From: Katy Coe Date: Mon, 18 Nov 2019 01:09:07 +0100 Subject: [PATCH] Tests: Add explicit interface implementation tests --- Il2CppTests/Il2CppTests.csproj | 7 + .../TestExpectedResults/ExplicitInterfaces.cs | 147 ++++++++++++++++++ .../GameAssembly-ExplicitInterfaces-x64.cs | 147 ++++++++++++++++++ .../GameAssembly-ExplicitInterfaces-x86.cs | 147 ++++++++++++++++++ Il2CppTests/TestSources/ExplicitInterfaces.cs | 59 +++++++ 5 files changed, 507 insertions(+) create mode 100644 Il2CppTests/TestExpectedResults/ExplicitInterfaces.cs create mode 100644 Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x64.cs create mode 100644 Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x86.cs create mode 100644 Il2CppTests/TestSources/ExplicitInterfaces.cs diff --git a/Il2CppTests/Il2CppTests.csproj b/Il2CppTests/Il2CppTests.csproj index b6b91f2..9cb6b50 100644 --- a/Il2CppTests/Il2CppTests.csproj +++ b/Il2CppTests/Il2CppTests.csproj @@ -27,6 +27,12 @@ + + + + + + @@ -52,6 +58,7 @@ + diff --git a/Il2CppTests/TestExpectedResults/ExplicitInterfaces.cs b/Il2CppTests/TestExpectedResults/ExplicitInterfaces.cs new file mode 100644 index 0000000..da7a578 --- /dev/null +++ b/Il2CppTests/TestExpectedResults/ExplicitInterfaces.cs @@ -0,0 +1,147 @@ +/* + * Generated code file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty + */ + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Image 0: mscorlib.dll - 0-1809 +// [assembly: AssemblyCompany] // 0x000A50A8-0x000A539C +// [assembly: AssemblyCopyright] // 0x000A50A8-0x000A539C +// [assembly: AssemblyDefaultAlias] // 0x000A50A8-0x000A539C +// [assembly: AssemblyDelaySign] // 0x000A50A8-0x000A539C +// [assembly: AssemblyDescription] // 0x000A50A8-0x000A539C +// [assembly: AssemblyFileVersion] // 0x000A50A8-0x000A539C +// [assembly: AssemblyInformationalVersion] // 0x000A50A8-0x000A539C +// [assembly: AssemblyKeyFile] // 0x000A50A8-0x000A539C +// [assembly: AssemblyProduct] // 0x000A50A8-0x000A539C +// [assembly: AssemblyTitle] // 0x000A50A8-0x000A539C +// [assembly: CLSCompliant] // 0x000A50A8-0x000A539C +// [assembly: CompilationRelaxations] // 0x000A50A8-0x000A539C +// [assembly: ComVisible] // 0x000A50A8-0x000A539C +// [assembly: Debuggable] // 0x000A50A8-0x000A539C +// [assembly: DefaultDependency] // 0x000A50A8-0x000A539C +// [assembly: Guid] // 0x000A50A8-0x000A539C +// [assembly: NeutralResourcesLanguage] // 0x000A50A8-0x000A539C +[assembly: RuntimeCompatibility] // 0x000A50A8-0x000A539C +// [assembly: SatelliteContractVersion] // 0x000A50A8-0x000A539C +[assembly: StringFreezing] // 0x000A50A8-0x000A539C +// [assembly: TypeLibVersion] // 0x000A50A8-0x000A539C + +// Image 1: ExplicitInterfaces.dll - 1810-1818 +// [assembly: CompilationRelaxations] // 0x000A539C-0x000A539C +// [assembly: Debuggable] // 0x000A539C-0x000A539C +[assembly: RuntimeCompatibility] // 0x000A539C-0x000A539C + +internal static class Consts // TypeDefIndex: 100 +{ + // Fields + public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECBFC + public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECC07 + public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECC20 + public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECC47 + public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECC63 + public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECC6E + public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECC79 + public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECC8B + public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC9D + public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECCE8 + public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECD45 + public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECDA6 + public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECE01 + public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECE51 + public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECEA2 + public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECEF6 + public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECF54 + public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECFA3 + public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECFF0 + public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED042 + public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED096 + public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED0F5 + public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED14A + public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1A6 + public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1FD + public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED253 + public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED2AF + public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED300 + public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED35B +} + +internal sealed class Locale // TypeDefIndex: 101 +{ + // Constructors + private Locale() {} // 0x003EC630-0x003EC638 + + // Methods + public static string GetText(string msg) => default; // 0x003EC638-0x003EC63C + public static string GetText(string fmt, params /* 0x000A38D4-0x000A38E4 */ object[] args) => default; // 0x003EC63C-0x003EC6C8 +} + +namespace Il2CppTests.TestSources +{ + internal interface IControl // TypeDefIndex: 1811 + { + // Methods + void Paint(); + } + + internal interface ISurface // TypeDefIndex: 1812 + { + // Methods + void Paint(); + } + + internal class Test : IControl, ISurface // TypeDefIndex: 1813 + { + // Constructors + public Test() {} // 0x0056159C-0x0056159C + + // Methods + void IControl.Paint() {} // 0x00561594-0x00561598 + void ISurface.Paint() {} // 0x00561598-0x0056159C + } + + internal interface ILeft // TypeDefIndex: 1814 + { + // Properties + int P { get; } + } + + internal interface IRight // TypeDefIndex: 1815 + { + // Methods + int P(); + } + + internal class Middle : ILeft, IRight // TypeDefIndex: 1816 + { + // Properties + int ILeft.P { get; } // 0x00561584-0x0056158C + + // Constructors + public Middle() {} // 0x0056158C-0x00561594 + + // Methods + int P() => default; // 0x0056157C-0x00561584 + } + + internal interface IGeneric // TypeDefIndex: 1817 + { + // Methods + void GenericMethod(T t); + } + + internal class ImplementsGenericInterface : IGeneric> // TypeDefIndex: 1818 + { + // Constructors + public ImplementsGenericInterface() {} // 0x00561574-0x0056157C + + // Methods + void IGeneric>.GenericMethod(KeyValuePair t) {} // 0x00561570-0x00561574 + } +} diff --git a/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x64.cs b/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x64.cs new file mode 100644 index 0000000..8344f55 --- /dev/null +++ b/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x64.cs @@ -0,0 +1,147 @@ +/* + * Generated code file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty + */ + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Image 0: mscorlib.dll - 0-1809 +// [assembly: AssemblyCompany] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: AssemblyCopyright] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: AssemblyDefaultAlias] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: AssemblyDelaySign] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: AssemblyDescription] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: AssemblyFileVersion] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: AssemblyInformationalVersion] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: AssemblyKeyFile] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: AssemblyProduct] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: AssemblyTitle] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: CLSCompliant] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: CompilationRelaxations] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: ComVisible] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: Debuggable] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: DefaultDependency] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: Guid] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: NeutralResourcesLanguage] // 0x000000018000E950-0x000000018000CAF0 +[assembly: RuntimeCompatibility] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: SatelliteContractVersion] // 0x000000018000E950-0x000000018000CAF0 +[assembly: StringFreezing] // 0x000000018000E950-0x000000018000CAF0 +// [assembly: TypeLibVersion] // 0x000000018000E950-0x000000018000CAF0 + +// Image 1: ExplicitInterfaces.dll - 1810-1818 +// [assembly: CompilationRelaxations] // 0x000000018000CAF0-0x000000018000CAF0 +// [assembly: Debuggable] // 0x000000018000CAF0-0x000000018000CAF0 +[assembly: RuntimeCompatibility] // 0x000000018000CAF0-0x000000018000CAF0 + +internal static class Consts // TypeDefIndex: 100 +{ + // Fields + public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECBFC + public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECC07 + public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECC20 + public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECC47 + public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECC63 + public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECC6E + public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECC79 + public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECC8B + public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC9D + public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECCE8 + public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECD45 + public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECDA6 + public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECE01 + public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECE51 + public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECEA2 + public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECEF6 + public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECF54 + public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECFA3 + public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECFF0 + public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED042 + public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED096 + public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED0F5 + public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED14A + public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1A6 + public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1FD + public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED253 + public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED2AF + public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED300 + public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED35B +} + +internal sealed class Locale // TypeDefIndex: 101 +{ + // Constructors + private Locale() {} // 0x00000001800E2000-0x00000001800E2000 + + // Methods + public static string GetText(string msg) => default; // 0x0000000180123590-0x0000000180123590 + public static string GetText(string fmt, params /* 0x0000000180009C10-0x0000000180009C10 */ object[] args) => default; // 0x00000001802C64F0-0x00000001802C6560 +} + +namespace Il2CppTests.TestSources +{ + internal interface IControl // TypeDefIndex: 1811 + { + // Methods + void Paint(); + } + + internal interface ISurface // TypeDefIndex: 1812 + { + // Methods + void Paint(); + } + + internal class Test : IControl, ISurface // TypeDefIndex: 1813 + { + // Constructors + public Test() {} // 0x00000001800E2000-0x00000001800E2000 + + // Methods + void IControl.Paint() {} // 0x00000001800EA7B0-0x00000001800EA7B0 + void ISurface.Paint() {} // 0x00000001800EA7B0-0x00000001800EA7B0 + } + + internal interface ILeft // TypeDefIndex: 1814 + { + // Properties + int P { get; } + } + + internal interface IRight // TypeDefIndex: 1815 + { + // Methods + int P(); + } + + internal class Middle : ILeft, IRight // TypeDefIndex: 1816 + { + // Properties + int ILeft.P { get; } // 0x00000001800EA8C0-0x00000001800EA8C0 + + // Constructors + public Middle() {} // 0x00000001800E2000-0x00000001800E2000 + + // Methods + int P() => default; // 0x00000001800EA8C0-0x00000001800EA8C0 + } + + internal interface IGeneric // TypeDefIndex: 1817 + { + // Methods + void GenericMethod(T t); + } + + internal class ImplementsGenericInterface : IGeneric> // TypeDefIndex: 1818 + { + // Constructors + public ImplementsGenericInterface() {} // 0x00000001800E2000-0x00000001800E2000 + + // Methods + void IGeneric>.GenericMethod(KeyValuePair t) {} // 0x00000001800EA7B0-0x00000001800EA7B0 + } +} diff --git a/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x86.cs b/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x86.cs new file mode 100644 index 0000000..1471fe6 --- /dev/null +++ b/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x86.cs @@ -0,0 +1,147 @@ +/* + * Generated code file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty + */ + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Image 0: mscorlib.dll - 0-1809 +// [assembly: AssemblyCompany] // 0x1000F760-0x1000DC90 +// [assembly: AssemblyCopyright] // 0x1000F760-0x1000DC90 +// [assembly: AssemblyDefaultAlias] // 0x1000F760-0x1000DC90 +// [assembly: AssemblyDelaySign] // 0x1000F760-0x1000DC90 +// [assembly: AssemblyDescription] // 0x1000F760-0x1000DC90 +// [assembly: AssemblyFileVersion] // 0x1000F760-0x1000DC90 +// [assembly: AssemblyInformationalVersion] // 0x1000F760-0x1000DC90 +// [assembly: AssemblyKeyFile] // 0x1000F760-0x1000DC90 +// [assembly: AssemblyProduct] // 0x1000F760-0x1000DC90 +// [assembly: AssemblyTitle] // 0x1000F760-0x1000DC90 +// [assembly: CLSCompliant] // 0x1000F760-0x1000DC90 +// [assembly: CompilationRelaxations] // 0x1000F760-0x1000DC90 +// [assembly: ComVisible] // 0x1000F760-0x1000DC90 +// [assembly: Debuggable] // 0x1000F760-0x1000DC90 +// [assembly: DefaultDependency] // 0x1000F760-0x1000DC90 +// [assembly: Guid] // 0x1000F760-0x1000DC90 +// [assembly: NeutralResourcesLanguage] // 0x1000F760-0x1000DC90 +[assembly: RuntimeCompatibility] // 0x1000F760-0x1000DC90 +// [assembly: SatelliteContractVersion] // 0x1000F760-0x1000DC90 +[assembly: StringFreezing] // 0x1000F760-0x1000DC90 +// [assembly: TypeLibVersion] // 0x1000F760-0x1000DC90 + +// Image 1: ExplicitInterfaces.dll - 1810-1818 +// [assembly: CompilationRelaxations] // 0x1000DC90-0x1000DC90 +// [assembly: Debuggable] // 0x1000DC90-0x1000DC90 +[assembly: RuntimeCompatibility] // 0x1000DC90-0x1000DC90 + +internal static class Consts // TypeDefIndex: 100 +{ + // Fields + public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECBFC + public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECC07 + public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECC20 + public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECC47 + public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECC63 + public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECC6E + public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECC79 + public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECC8B + public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC9D + public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECCE8 + public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECD45 + public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECDA6 + public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECE01 + public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECE51 + public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECEA2 + public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECEF6 + public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECF54 + public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECFA3 + public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECFF0 + public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED042 + public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED096 + public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED0F5 + public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED14A + public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1A6 + public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1FD + public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED253 + public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED2AF + public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED300 + public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED35B +} + +internal sealed class Locale // TypeDefIndex: 101 +{ + // Constructors + private Locale() {} // 0x100BF000-0x100BF000 + + // Methods + public static string GetText(string msg) => default; // 0x100F7810-0x100F7810 + public static string GetText(string fmt, params /* 0x1000A660-0x1000A660 */ object[] args) => default; // 0x10261460-0x102614B0 +} + +namespace Il2CppTests.TestSources +{ + internal interface IControl // TypeDefIndex: 1811 + { + // Methods + void Paint(); + } + + internal interface ISurface // TypeDefIndex: 1812 + { + // Methods + void Paint(); + } + + internal class Test : IControl, ISurface // TypeDefIndex: 1813 + { + // Constructors + public Test() {} // 0x100BF000-0x100BF000 + + // Methods + void IControl.Paint() {} // 0x100C5530-0x100C5530 + void ISurface.Paint() {} // 0x100C5530-0x100C5530 + } + + internal interface ILeft // TypeDefIndex: 1814 + { + // Properties + int P { get; } + } + + internal interface IRight // TypeDefIndex: 1815 + { + // Methods + int P(); + } + + internal class Middle : ILeft, IRight // TypeDefIndex: 1816 + { + // Properties + int ILeft.P { get; } // 0x100C5600-0x100C5600 + + // Constructors + public Middle() {} // 0x100BF000-0x100BF000 + + // Methods + int P() => default; // 0x100C5600-0x100C5600 + } + + internal interface IGeneric // TypeDefIndex: 1817 + { + // Methods + void GenericMethod(T t); + } + + internal class ImplementsGenericInterface : IGeneric> // TypeDefIndex: 1818 + { + // Constructors + public ImplementsGenericInterface() {} // 0x100BF000-0x100BF000 + + // Methods + void IGeneric>.GenericMethod(KeyValuePair t) {} // 0x100C5530-0x100C5530 + } +} diff --git a/Il2CppTests/TestSources/ExplicitInterfaces.cs b/Il2CppTests/TestSources/ExplicitInterfaces.cs new file mode 100644 index 0000000..f298a63 --- /dev/null +++ b/Il2CppTests/TestSources/ExplicitInterfaces.cs @@ -0,0 +1,59 @@ +/* + Copyright 2017-2019 Katy Coe - http://www.hearthcode.org - http://www.djkaty.com + + All rights reserved. +*/ + +using System.Collections.Generic; + +#pragma warning disable CS0169 +namespace Il2CppTests.TestSources +{ + // See: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/interfaces/explicit-interface-implementation + + interface IControl + { + void Paint(); + } + + interface ISurface + { + void Paint(); + } + + internal class Test : IControl, ISurface + { + // No access modifiers on explicit interface implementation + void IControl.Paint() {} + void ISurface.Paint() {} + } + + interface ILeft + { + int P { get; } + } + + interface IRight + { + int P(); + } + + internal class Middle : ILeft, IRight + { + // One or the other has to be explicitly implemented to resolve naming conflicts + public int P() => default; + int ILeft.P => default; + } + + // Generic implementation + interface IGeneric + { + void GenericMethod(T t); + } + + internal class ImplementsGenericInterface : IGeneric> + { + void IGeneric>.GenericMethod(KeyValuePair t) {} + } +} +#pragma warning restore CS0169