可能重复:
从IEnumerable <T>获取类型T.
我有一个属性类型 IEnumerable
public IEnumerable PossibleValues { get; set; }
如何发现它实例化的基本类型?
例如,如果它是这样创建的:
PossibleValues = new int?[] { 1, 2 }
Run Code Online (Sandbox Code Playgroud)
我想知道那个类型是'int'.
使用default(int?)或(int?)null分配变量有什么区别吗?
是一回事吗?
或者存在一些利弊,以各种方式使用?
这段代码有效
var toString = typeof(string).GetMethod("ToString", new Type[] { });
var dm = new DynamicMethod("MyToString", typeof(string), new Type[] { typeof(string) });
var il = dm.GetILGenerator();
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Callvirt, toString);
il.Emit(OpCodes.Ret);
Delegate d = dm.CreateDelegate(typeof(Func<string, string>));
var r = d.DynamicInvoke("10");
Run Code Online (Sandbox Code Playgroud)
此代码抛出异常(System.Security.VerificationException:Operation可能会破坏运行时的稳定性.)
var toString = typeof(int).GetMethod("ToString", new Type[] { });
var dm = new DynamicMethod("MyToString", typeof(string), new Type[] { typeof(int) });
var il = dm.GetILGenerator();
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Callvirt, toString);
il.Emit(OpCodes.Ret);
Delegate d = dm.CreateDelegate(typeof(Func<int, string>));
var r = d.DynamicInvoke(10);
Run Code Online (Sandbox Code Playgroud)
为什么?