我有metaprogramm,需要爲初始化值字段創建代碼。 也就是說上課反射發射。推廣Ldc_R8和Ldc_I4_0
class Class1
{
int i;
double t;
Class1()
{
i=5;
t=3;
}
}
在反思,這看起來像如下:
...
gen.Emit(OpCodes.Ldc_I4,5);
...
gen.Emit(OpCodes.Ldc_R8,3);
...
我不希望有這樣一個巨大的開關:
switch(t)
{
case typeof(int): gen.Emit(OpCode.Ldc_I4,value); break;
case typeof(double): gen.Emit(OpCodes.Ldc_R8,value); break;
// and so on for all value types
}
有一些普遍的負荷值上評估堆棧OpCode?或者我需要有上面提到的開關?
當然'float'不是'R8'!你的意思是「雙」嗎? – leppie
你需要巨型開關,請在這裏發佈它,以便其他人可以使用它:) –
順便說一句,你只有一個有限的範圍來處理,我沒有看到編碼一個大開關的問題。做一次,你就完成了! – leppie