3
|
Lasse V. Karlsen · 技术社区 · 15 年前 |
![]() |
1
1
对于值类型,步骤l004应为
找出您需要生成的正确IL的最简单方法是查看C编译器使用一些测试代码生成的内容。
编译到: L_0000: ldarg.0 L_0001: ldc.i4.0 L_0002: ldelem.ref L_0003: castclass string L_0008: ldarg.0 L_0009: ldc.i4.1 L_000a: ldelem.ref L_000b: unbox.any int32 L_0010: ldarg.0 L_0011: ldc.i4.2 L_0012: ldelem.ref L_0013: unbox.any [mscorlib]System.Nullable`1<valuetype [mscorlib]System.DateTime> L_0018: call void Program::TestTarget(string, int32, valuetype [mscorlib]System.Nullable`1<valuetype [mscorlib]System.DateTime>) L_001d: ret |
![]() |
2
0
有一些库可以使反射更容易(更快)工作。例如, Fasterflect 可以为调用任何构造函数生成IL—您只需将要在构造函数上使用的参数传递给它。
如果没有一组与构造函数完全匹配的参数,则库还可以探测到要调用的适当构造函数。
免责声明:我作为一个贡献者参与了这个项目。 |