Created
December 4, 2018 19:22
-
-
Save valerysntx/57238be5a4295435ff1c162a45f4cb59 to your computer and use it in GitHub Desktop.
ActivatorEx IL
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.33440 | |
// Copyright (c) Microsoft Corporation. All rights reserved. | |
// | |
// Metadata version: v4.0.30319 | |
.assembly extern mscorlib | |
{ | |
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. | |
.ver 4:0:0:0 | |
} | |
.assembly extern System.Core | |
{ | |
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. | |
.ver 4:0:0:0 | |
} | |
.assembly aysp421r | |
{ | |
.hash algorithm 0x00008004 | |
.ver 0:0:0:0 | |
} | |
.module aysp421r.dll | |
// MVID: {4F37BC85-8FCA-4EC3-8933-502D723AFA5E} | |
.imagebase 0x10000000 | |
.file alignment 0x00000200 | |
.stackreserve 0x00100000 | |
.subsystem 0x0003 // WINDOWS_CUI | |
.corflags 0x00000001 // ILONLY | |
// Image base: 0x011D0000 | |
// =============== CLASS MEMBERS DECLARATION =================== | |
.class public auto ansi beforefieldinit Program | |
extends [mscorlib]System.Object | |
{ | |
.class auto ansi nested public beforefieldinit Hello | |
extends [mscorlib]System.Object | |
{ | |
.method public hidebysig specialname rtspecialname | |
instance void .ctor(string greetMessage, | |
int32 age) cil managed | |
{ | |
// | |
.maxstack 8 | |
IL_0000: ldarg.0 | |
IL_0001: call instance void [mscorlib]System.Object::.ctor() | |
IL_0006: nop | |
IL_0007: nop | |
IL_0008: ldarg.1 | |
IL_0009: ldarga.s age | |
IL_000b: call instance string [mscorlib]System.Int32::ToString() | |
IL_0010: call string [mscorlib]System.String::Concat(string, | |
string) | |
IL_0015: call void [mscorlib]System.Console::WriteLine(string) | |
IL_001a: nop | |
IL_001b: nop | |
IL_001c: ret | |
} // end of method Hello::.ctor | |
} // end of class Hello | |
.method public hidebysig static void Main() cil managed | |
{ | |
// | |
.maxstack 4 | |
.locals init (class ActivatorEx/ObjectActivator`1<class Program/Hello> V_0, | |
object[] V_1) | |
IL_0000: nop | |
IL_0001: call class ActivatorEx/ObjectActivator`1<!!0> ActivatorEx::CreateFactoryFor<class Program/Hello>() | |
IL_0006: stloc.0 | |
IL_0007: ldloc.0 | |
IL_0008: ldc.i4.2 | |
IL_0009: newarr [mscorlib]System.Object | |
IL_000e: stloc.1 | |
IL_000f: ldloc.1 | |
IL_0010: ldc.i4.0 | |
IL_0011: ldstr "greeting! my age is " | |
IL_0016: stelem.ref | |
IL_0017: ldloc.1 | |
IL_0018: ldc.i4.1 | |
IL_0019: ldc.i4.s 18 | |
IL_001b: box [mscorlib]System.Int32 | |
IL_0020: stelem.ref | |
IL_0021: ldloc.1 | |
IL_0022: callvirt instance !0 class ActivatorEx/ObjectActivator`1<class Program/Hello>::Invoke(object[]) | |
IL_0027: pop | |
IL_0028: ret | |
} // end of method Program::Main | |
.method public hidebysig specialname rtspecialname | |
instance void .ctor() cil managed | |
{ | |
// | |
.maxstack 8 | |
IL_0000: ldarg.0 | |
IL_0001: call instance void [mscorlib]System.Object::.ctor() | |
IL_0006: ret | |
} // end of method Program::.ctor | |
} // end of class Program | |
.class public auto ansi beforefieldinit ActivatorEx | |
extends [mscorlib]System.Object | |
{ | |
.class auto ansi sealed nested public ObjectActivator`1<T> | |
extends [mscorlib]System.MulticastDelegate | |
{ | |
.method public hidebysig specialname rtspecialname | |
instance void .ctor(object 'object', | |
native int 'method') runtime managed | |
{ | |
} // end of method ObjectActivator`1::.ctor | |
.method public hidebysig newslot virtual | |
instance !T Invoke(object[] args) runtime managed | |
{ | |
} // end of method ObjectActivator`1::Invoke | |
.method public hidebysig newslot virtual | |
instance class [mscorlib]System.IAsyncResult | |
BeginInvoke(object[] args, | |
class [mscorlib]System.AsyncCallback callback, | |
object 'object') runtime managed | |
{ | |
} // end of method ObjectActivator`1::BeginInvoke | |
.method public hidebysig newslot virtual | |
instance !T EndInvoke(class [mscorlib]System.IAsyncResult result) runtime managed | |
{ | |
} // end of method ObjectActivator`1::EndInvoke | |
} // end of class ObjectActivator`1 | |
.method public hidebysig static !!T Create<T>(object[] args) cil managed | |
{ | |
// | |
.maxstack 4 | |
.locals init (!!T V_0, | |
object[][] V_1) | |
IL_0000: nop | |
IL_0001: call class ActivatorEx/ObjectActivator`1<!!0> ActivatorEx::CreateFactoryFor<!!0>() | |
IL_0006: ldc.i4.1 | |
IL_0007: newarr object[] | |
IL_000c: stloc.1 | |
IL_000d: ldloc.1 | |
IL_000e: ldc.i4.0 | |
IL_000f: ldarg.0 | |
IL_0010: stelem.ref | |
IL_0011: ldloc.1 | |
IL_0012: callvirt instance !0 class ActivatorEx/ObjectActivator`1<!!T>::Invoke(object[]) | |
IL_0017: stloc.0 | |
IL_0018: br.s IL_001a | |
IL_001a: ldloc.0 | |
IL_001b: ret | |
} // end of method ActivatorEx::Create | |
.method public hidebysig static class ActivatorEx/ObjectActivator`1<!!T> | |
GetActivator<T>(class [mscorlib]System.Reflection.ConstructorInfo ctor) cil managed | |
{ | |
// | |
.maxstack 5 | |
.locals init (class [mscorlib]System.Type V_0, | |
class [mscorlib]System.Reflection.ParameterInfo[] V_1, | |
class [System.Core]System.Linq.Expressions.ParameterExpression V_2, | |
class [System.Core]System.Linq.Expressions.Expression[] V_3, | |
int32 V_4, | |
class [System.Core]System.Linq.Expressions.Expression V_5, | |
class [mscorlib]System.Type V_6, | |
class [System.Core]System.Linq.Expressions.Expression V_7, | |
class [System.Core]System.Linq.Expressions.Expression V_8, | |
class [System.Core]System.Linq.Expressions.NewExpression V_9, | |
class [System.Core]System.Linq.Expressions.LambdaExpression V_10, | |
class ActivatorEx/ObjectActivator`1<!!T> V_11, | |
class ActivatorEx/ObjectActivator`1<!!T> V_12, | |
bool V_13, | |
class [System.Core]System.Linq.Expressions.ParameterExpression[] V_14) | |
IL_0000: nop | |
IL_0001: ldarg.0 | |
IL_0002: callvirt instance class [mscorlib]System.Type [mscorlib]System.Reflection.MemberInfo::get_DeclaringType() | |
IL_0007: stloc.0 | |
IL_0008: ldarg.0 | |
IL_0009: callvirt instance class [mscorlib]System.Reflection.ParameterInfo[] [mscorlib]System.Reflection.MethodBase::GetParameters() | |
IL_000e: stloc.1 | |
IL_000f: ldc.i4.0 | |
IL_0010: newarr [mscorlib]System.Object | |
IL_0015: call instance class [mscorlib]System.Type [mscorlib]System.Object::GetType() | |
IL_001a: ldstr "args" | |
IL_001f: call class [System.Core]System.Linq.Expressions.ParameterExpression [System.Core]System.Linq.Expressions.Expression::Parameter(class [mscorlib]System.Type, | |
string) | |
IL_0024: stloc.2 | |
IL_0025: ldloc.1 | |
IL_0026: ldlen | |
IL_0027: conv.i4 | |
IL_0028: newarr [System.Core]System.Linq.Expressions.Expression | |
IL_002d: stloc.3 | |
IL_002e: ldc.i4.0 | |
IL_002f: stloc.s V_4 | |
IL_0031: br.s IL_006f | |
IL_0033: nop | |
IL_0034: ldloc.s V_4 | |
IL_0036: box [mscorlib]System.Int32 | |
IL_003b: call class [System.Core]System.Linq.Expressions.ConstantExpression [System.Core]System.Linq.Expressions.Expression::Constant(object) | |
IL_0040: stloc.s V_5 | |
IL_0042: ldloc.1 | |
IL_0043: ldloc.s V_4 | |
IL_0045: ldelem.ref | |
IL_0046: callvirt instance class [mscorlib]System.Type [mscorlib]System.Reflection.ParameterInfo::get_ParameterType() | |
IL_004b: stloc.s V_6 | |
IL_004d: ldloc.2 | |
IL_004e: ldloc.s V_5 | |
IL_0050: call class [System.Core]System.Linq.Expressions.BinaryExpression [System.Core]System.Linq.Expressions.Expression::ArrayIndex(class [System.Core]System.Linq.Expressions.Expression, | |
class [System.Core]System.Linq.Expressions.Expression) | |
IL_0055: stloc.s V_7 | |
IL_0057: ldloc.s V_7 | |
IL_0059: ldloc.s V_6 | |
IL_005b: call class [System.Core]System.Linq.Expressions.UnaryExpression [System.Core]System.Linq.Expressions.Expression::Convert(class [System.Core]System.Linq.Expressions.Expression, | |
class [mscorlib]System.Type) | |
IL_0060: stloc.s V_8 | |
IL_0062: ldloc.3 | |
IL_0063: ldloc.s V_4 | |
IL_0065: ldloc.s V_8 | |
IL_0067: stelem.ref | |
IL_0068: nop | |
IL_0069: ldloc.s V_4 | |
IL_006b: ldc.i4.1 | |
IL_006c: add | |
IL_006d: stloc.s V_4 | |
IL_006f: ldloc.s V_4 | |
IL_0071: ldloc.1 | |
IL_0072: ldlen | |
IL_0073: conv.i4 | |
IL_0074: clt | |
IL_0076: stloc.s V_13 | |
IL_0078: ldloc.s V_13 | |
IL_007a: brtrue.s IL_0033 | |
IL_007c: ldarg.0 | |
IL_007d: ldloc.3 | |
IL_007e: call class [System.Core]System.Linq.Expressions.NewExpression [System.Core]System.Linq.Expressions.Expression::New(class [mscorlib]System.Reflection.ConstructorInfo, | |
class [System.Core]System.Linq.Expressions.Expression[]) | |
IL_0083: stloc.s V_9 | |
IL_0085: ldtoken class ActivatorEx/ObjectActivator`1<!!T> | |
IL_008a: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle) | |
IL_008f: ldloc.s V_9 | |
IL_0091: ldc.i4.1 | |
IL_0092: newarr [System.Core]System.Linq.Expressions.ParameterExpression | |
IL_0097: stloc.s V_14 | |
IL_0099: ldloc.s V_14 | |
IL_009b: ldc.i4.0 | |
IL_009c: ldloc.2 | |
IL_009d: stelem.ref | |
IL_009e: ldloc.s V_14 | |
IL_00a0: call class [System.Core]System.Linq.Expressions.LambdaExpression [System.Core]System.Linq.Expressions.Expression::Lambda(class [mscorlib]System.Type, | |
class [System.Core]System.Linq.Expressions.Expression, | |
class [System.Core]System.Linq.Expressions.ParameterExpression[]) | |
IL_00a5: stloc.s V_10 | |
IL_00a7: ldloc.s V_10 | |
IL_00a9: callvirt instance class [mscorlib]System.Delegate [System.Core]System.Linq.Expressions.LambdaExpression::Compile() | |
IL_00ae: castclass class ActivatorEx/ObjectActivator`1<!!T> | |
IL_00b3: stloc.s V_11 | |
IL_00b5: ldloc.s V_11 | |
IL_00b7: stloc.s V_12 | |
IL_00b9: br.s IL_00bb | |
IL_00bb: ldloc.s V_12 | |
IL_00bd: ret | |
} // end of method ActivatorEx::GetActivator | |
.method public hidebysig static class ActivatorEx/ObjectActivator`1<!!T> | |
CreateFactoryFor<T>() cil managed | |
{ | |
// | |
.maxstack 1 | |
.locals init (class [mscorlib]System.Reflection.ConstructorInfo V_0, | |
class ActivatorEx/ObjectActivator`1<!!T> V_1, | |
class ActivatorEx/ObjectActivator`1<!!T> V_2) | |
IL_0000: nop | |
IL_0001: ldtoken !!T | |
IL_0006: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle) | |
IL_000b: call instance class [mscorlib]System.Reflection.ConstructorInfo[] [mscorlib]System.Type::GetConstructors() | |
IL_0010: call !!0 [System.Core]System.Linq.Enumerable::First<class [mscorlib]System.Reflection.ConstructorInfo>(class [mscorlib]System.Collections.Generic.IEnumerable`1<!!0>) | |
IL_0015: stloc.0 | |
IL_0016: ldloc.0 | |
IL_0017: call class ActivatorEx/ObjectActivator`1<!!0> ActivatorEx::GetActivator<!!0>(class [mscorlib]System.Reflection.ConstructorInfo) | |
IL_001c: stloc.1 | |
IL_001d: ldloc.1 | |
IL_001e: stloc.2 | |
IL_001f: br.s IL_0021 | |
IL_0021: ldloc.2 | |
IL_0022: ret | |
} // end of method ActivatorEx::CreateFactoryFor | |
.method public hidebysig specialname rtspecialname | |
instance void .ctor() cil managed | |
{ | |
// | |
.maxstack 8 | |
IL_0000: ldarg.0 | |
IL_0001: call instance void [mscorlib]System.Object::.ctor() | |
IL_0006: ret | |
} // end of method ActivatorEx::.ctor | |
} // end of class ActivatorEx | |
// ============================================================= | |
// | |
// |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment