diff --git a/Il2CppDumper/Il2CppCSharpDumper.cs b/Il2CppDumper/Il2CppCSharpDumper.cs index a2b50b4..77efaa2 100644 --- a/Il2CppDumper/Il2CppCSharpDumper.cs +++ b/Il2CppDumper/Il2CppCSharpDumper.cs @@ -271,7 +271,9 @@ namespace Il2CppInspector // Indexer else { - sb.Append("this[" + string.Join(", ", primary.DeclaredParameters.SkipLast(getAccess >= setAccess ? 0 : 1) + // Replace "Item" with "this" - preserves explicit interface implementations + sb.Append(prop.CSharpName[..^4] + "this"); + sb.Append("[" + string.Join(", ", primary.DeclaredParameters.SkipLast(getAccess >= setAccess ? 0 : 1) .Select(p => p.GetParameterString(scope, !SuppressMetadata, MustCompile))) + "] { "); getBody = " => default;"; setBody = " {}"; diff --git a/Il2CppTests/TestExpectedResults/ExplicitInterfaces.cs b/Il2CppTests/TestExpectedResults/ExplicitInterfaces.cs index 9f81fad..dd2008a 100644 --- a/Il2CppTests/TestExpectedResults/ExplicitInterfaces.cs +++ b/Il2CppTests/TestExpectedResults/ExplicitInterfaces.cs @@ -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] // 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 +// [assembly: AssemblyCompany] // 0x000A5100-0x000A53F4 +// [assembly: AssemblyCopyright] // 0x000A5100-0x000A53F4 +// [assembly: AssemblyDefaultAlias] // 0x000A5100-0x000A53F4 +// [assembly: AssemblyDelaySign] // 0x000A5100-0x000A53F4 +// [assembly: AssemblyDescription] // 0x000A5100-0x000A53F4 +// [assembly: AssemblyFileVersion] // 0x000A5100-0x000A53F4 +// [assembly: AssemblyInformationalVersion] // 0x000A5100-0x000A53F4 +// [assembly: AssemblyKeyFile] // 0x000A5100-0x000A53F4 +// [assembly: AssemblyProduct] // 0x000A5100-0x000A53F4 +// [assembly: AssemblyTitle] // 0x000A5100-0x000A53F4 +// [assembly: CLSCompliant] // 0x000A5100-0x000A53F4 +// [assembly: CompilationRelaxations] // 0x000A5100-0x000A53F4 +// [assembly: ComVisible] // 0x000A5100-0x000A53F4 +// [assembly: Debuggable] // 0x000A5100-0x000A53F4 +// [assembly: DefaultDependency] // 0x000A5100-0x000A53F4 +// [assembly: Guid] // 0x000A5100-0x000A53F4 +// [assembly: NeutralResourcesLanguage] // 0x000A5100-0x000A53F4 +[assembly: RuntimeCompatibility] // 0x000A5100-0x000A53F4 +// [assembly: SatelliteContractVersion] // 0x000A5100-0x000A53F4 +[assembly: StringFreezing] // 0x000A5100-0x000A53F4 +// [assembly: TypeLibVersion] // 0x000A5100-0x000A53F4 -// Image 1: ExplicitInterfaces.dll - Assembly: ExplicitInterfaces, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1818 -// [assembly: CompilationRelaxations] // 0x000A539C-0x000A539C -// [assembly: Debuggable] // 0x000A539C-0x000A539C -[assembly: RuntimeCompatibility] // 0x000A539C-0x000A539C +// Image 1: ExplicitInterfaces.dll - Assembly: ExplicitInterfaces, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1820 +// [assembly: CompilationRelaxations] // 0x000A545C-0x000A545C +// [assembly: Debuggable] // 0x000A545C-0x000A545C +[assembly: RuntimeCompatibility] // 0x000A545C-0x000A545C 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 + public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECD24 + public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECD2F + public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECD48 + public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECD6F + public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECD8B + public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECD96 + public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECDA1 + public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECDB3 + public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECDC5 + public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE10 + public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE6D + public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECECE + public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECF29 + public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECF79 + public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECFCA + public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED01E + public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED07C + public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED0CB + public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED118 + public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED16A + public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1BE + public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED21D + public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED272 + public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED2CE + public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED325 + public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED37B + public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED3D7 + public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED428 + public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED483 } internal sealed class Locale // TypeDefIndex: 101 { // Constructors - private Locale() {} // 0x003EC630-0x003EC638 + private Locale() {} // 0x003EC6F0-0x003EC6F8 // Methods - public static string GetText(string msg) => default; // 0x003EC638-0x003EC63C - public static string GetText(string fmt, params /* 0x000A38D4-0x000A38E4 */ object[] args) => default; // 0x003EC63C-0x003EC6C8 + public static string GetText(string msg) => default; // 0x003EC6F8-0x003EC6FC + public static string GetText(string fmt, params /* 0x000A392C-0x000A393C */ object[] args) => default; // 0x003EC6FC-0x003EC788 } namespace Il2CppTests.TestSources @@ -99,11 +99,11 @@ namespace Il2CppTests.TestSources internal class Test : IControl, ISurface // TypeDefIndex: 1813 { // Constructors - public Test() {} // 0x0056159C-0x0056159C + public Test() {} // 0x00561674-0x00561674 // Methods - void IControl.Paint() {} // 0x00561594-0x00561598 - void ISurface.Paint() {} // 0x00561598-0x0056159C + void IControl.Paint() {} // 0x0056166C-0x00561670 + void ISurface.Paint() {} // 0x00561670-0x00561674 } internal interface ILeft // TypeDefIndex: 1814 @@ -121,13 +121,13 @@ namespace Il2CppTests.TestSources internal class Middle : ILeft, IRight // TypeDefIndex: 1816 { // Properties - int ILeft.P { get => default; } // 0x00561584-0x0056158C + int ILeft.P { get => default; } // 0x0056165C-0x00561664 // Constructors - public Middle() {} // 0x0056158C-0x00561594 + public Middle() {} // 0x00561664-0x0056166C // Methods - public int P() => default; // 0x0056157C-0x00561584 + public int P() => default; // 0x00561654-0x0056165C } internal interface IGeneric // TypeDefIndex: 1817 @@ -139,9 +139,25 @@ namespace Il2CppTests.TestSources internal class ImplementsGenericInterface : IGeneric> // TypeDefIndex: 1818 { // Constructors - public ImplementsGenericInterface() {} // 0x00561574-0x0056157C + public ImplementsGenericInterface() {} // 0x00561634-0x0056163C // Methods - void IGeneric>.GenericMethod(KeyValuePair t) {} // 0x00561570-0x00561574 + void IGeneric>.GenericMethod(KeyValuePair t) {} // 0x00561630-0x00561634 + } + + internal interface IIndexer // TypeDefIndex: 1819 + { + // Properties + bool this[int i] { get => default; } + } + + internal class ImplementsIndexer : IIndexer // TypeDefIndex: 1820 + { + // Properties + public bool this[int i] { get => default; } // 0x0056163C-0x00561644 + bool IIndexer.this[int i] { get => default; } // 0x00561644-0x0056164C + + // Constructors + public ImplementsIndexer() {} // 0x0056164C-0x00561654 } } diff --git a/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x64.cs b/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x64.cs index d253c00..f770081 100644 --- a/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x64.cs +++ b/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x64.cs @@ -11,29 +11,29 @@ 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] // 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 +// [assembly: AssemblyCompany] // 0x000000018000E950-0x000000018000B810 +// [assembly: AssemblyCopyright] // 0x000000018000E950-0x000000018000B810 +// [assembly: AssemblyDefaultAlias] // 0x000000018000E950-0x000000018000B810 +// [assembly: AssemblyDelaySign] // 0x000000018000E950-0x000000018000B810 +// [assembly: AssemblyDescription] // 0x000000018000E950-0x000000018000B810 +// [assembly: AssemblyFileVersion] // 0x000000018000E950-0x000000018000B810 +// [assembly: AssemblyInformationalVersion] // 0x000000018000E950-0x000000018000B810 +// [assembly: AssemblyKeyFile] // 0x000000018000E950-0x000000018000B810 +// [assembly: AssemblyProduct] // 0x000000018000E950-0x000000018000B810 +// [assembly: AssemblyTitle] // 0x000000018000E950-0x000000018000B810 +// [assembly: CLSCompliant] // 0x000000018000E950-0x000000018000B810 +// [assembly: CompilationRelaxations] // 0x000000018000E950-0x000000018000B810 +// [assembly: ComVisible] // 0x000000018000E950-0x000000018000B810 +// [assembly: Debuggable] // 0x000000018000E950-0x000000018000B810 +// [assembly: DefaultDependency] // 0x000000018000E950-0x000000018000B810 +// [assembly: Guid] // 0x000000018000E950-0x000000018000B810 +// [assembly: NeutralResourcesLanguage] // 0x000000018000E950-0x000000018000B810 +[assembly: RuntimeCompatibility] // 0x000000018000E950-0x000000018000B810 +// [assembly: SatelliteContractVersion] // 0x000000018000E950-0x000000018000B810 +[assembly: StringFreezing] // 0x000000018000E950-0x000000018000B810 +// [assembly: TypeLibVersion] // 0x000000018000E950-0x000000018000B810 -// Image 1: ExplicitInterfaces.dll - Assembly: ExplicitInterfaces, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1818 +// Image 1: ExplicitInterfaces.dll - Assembly: ExplicitInterfaces, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1820 // [assembly: CompilationRelaxations] // 0x000000018000CAF0-0x000000018000CAF0 // [assembly: Debuggable] // 0x000000018000CAF0-0x000000018000CAF0 [assembly: RuntimeCompatibility] // 0x000000018000CAF0-0x000000018000CAF0 @@ -41,35 +41,35 @@ using System.Runtime.InteropServices; 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 + public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECD24 + public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECD2F + public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECD48 + public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECD6F + public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECD8B + public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECD96 + public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECDA1 + public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECDB3 + public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECDC5 + public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE10 + public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE6D + public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECECE + public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECF29 + public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECF79 + public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECFCA + public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED01E + public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED07C + public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED0CB + public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED118 + public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED16A + public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1BE + public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED21D + public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED272 + public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED2CE + public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED325 + public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED37B + public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED3D7 + public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED428 + public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED483 } internal sealed class Locale // TypeDefIndex: 101 @@ -144,4 +144,20 @@ namespace Il2CppTests.TestSources // Methods void IGeneric>.GenericMethod(KeyValuePair t) {} // 0x00000001800EA7B0-0x00000001800EA7C0 } + + internal interface IIndexer // TypeDefIndex: 1819 + { + // Properties + bool this[int i] { get => default; } + } + + internal class ImplementsIndexer : IIndexer // TypeDefIndex: 1820 + { + // Properties + public bool this[int i] { get => default; } // 0x000000018011A0F0-0x000000018011A100 + bool IIndexer.this[int i] { get => default; } // 0x000000018011A0F0-0x000000018011A100 + + // Constructors + public ImplementsIndexer() {} // 0x00000001800E2000-0x00000001800E2010 + } } diff --git a/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x86.cs b/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x86.cs index e9d720c..e9941fb 100644 --- a/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x86.cs +++ b/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x86.cs @@ -11,29 +11,29 @@ 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] // 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 +// [assembly: AssemblyCompany] // 0x1000F760-0x1000CCB0 +// [assembly: AssemblyCopyright] // 0x1000F760-0x1000CCB0 +// [assembly: AssemblyDefaultAlias] // 0x1000F760-0x1000CCB0 +// [assembly: AssemblyDelaySign] // 0x1000F760-0x1000CCB0 +// [assembly: AssemblyDescription] // 0x1000F760-0x1000CCB0 +// [assembly: AssemblyFileVersion] // 0x1000F760-0x1000CCB0 +// [assembly: AssemblyInformationalVersion] // 0x1000F760-0x1000CCB0 +// [assembly: AssemblyKeyFile] // 0x1000F760-0x1000CCB0 +// [assembly: AssemblyProduct] // 0x1000F760-0x1000CCB0 +// [assembly: AssemblyTitle] // 0x1000F760-0x1000CCB0 +// [assembly: CLSCompliant] // 0x1000F760-0x1000CCB0 +// [assembly: CompilationRelaxations] // 0x1000F760-0x1000CCB0 +// [assembly: ComVisible] // 0x1000F760-0x1000CCB0 +// [assembly: Debuggable] // 0x1000F760-0x1000CCB0 +// [assembly: DefaultDependency] // 0x1000F760-0x1000CCB0 +// [assembly: Guid] // 0x1000F760-0x1000CCB0 +// [assembly: NeutralResourcesLanguage] // 0x1000F760-0x1000CCB0 +[assembly: RuntimeCompatibility] // 0x1000F760-0x1000CCB0 +// [assembly: SatelliteContractVersion] // 0x1000F760-0x1000CCB0 +[assembly: StringFreezing] // 0x1000F760-0x1000CCB0 +// [assembly: TypeLibVersion] // 0x1000F760-0x1000CCB0 -// Image 1: ExplicitInterfaces.dll - Assembly: ExplicitInterfaces, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1818 +// Image 1: ExplicitInterfaces.dll - Assembly: ExplicitInterfaces, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1820 // [assembly: CompilationRelaxations] // 0x1000DC90-0x1000DC90 // [assembly: Debuggable] // 0x1000DC90-0x1000DC90 [assembly: RuntimeCompatibility] // 0x1000DC90-0x1000DC90 @@ -41,35 +41,35 @@ using System.Runtime.InteropServices; 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 + public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECD24 + public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECD2F + public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECD48 + public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECD6F + public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECD8B + public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECD96 + public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECDA1 + public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECDB3 + public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECDC5 + public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE10 + public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE6D + public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECECE + public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECF29 + public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECF79 + public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECFCA + public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED01E + public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED07C + public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED0CB + public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED118 + public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED16A + public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1BE + public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED21D + public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED272 + public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED2CE + public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED325 + public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED37B + public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED3D7 + public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED428 + public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED483 } internal sealed class Locale // TypeDefIndex: 101 @@ -144,4 +144,20 @@ namespace Il2CppTests.TestSources // Methods void IGeneric>.GenericMethod(KeyValuePair t) {} // 0x100C5530-0x100C5540 } + + internal interface IIndexer // TypeDefIndex: 1819 + { + // Properties + bool this[int i] { get => default; } + } + + internal class ImplementsIndexer : IIndexer // TypeDefIndex: 1820 + { + // Properties + public bool this[int i] { get => default; } // 0x100EFBF0-0x100EFC00 + bool IIndexer.this[int i] { get => default; } // 0x100EFBF0-0x100EFC00 + + // Constructors + public ImplementsIndexer() {} // 0x100BF000-0x100BF010 + } } diff --git a/Il2CppTests/TestSources/ExplicitInterfaces.cs b/Il2CppTests/TestSources/ExplicitInterfaces.cs index f298a63..b1dec23 100644 --- a/Il2CppTests/TestSources/ExplicitInterfaces.cs +++ b/Il2CppTests/TestSources/ExplicitInterfaces.cs @@ -55,5 +55,20 @@ namespace Il2CppTests.TestSources { void IGeneric>.GenericMethod(KeyValuePair t) {} } + + // Explicit implementation of an indexer + interface IIndexer + { + bool this[int i] { get; } + } + + internal class ImplementsIndexer : IIndexer + { + // Normal indexer + public bool this[int i] => default; + + // Explicit interface indexer + bool IIndexer.this[int i] => default; + } } #pragma warning restore CS0169