私は値フィールドを初期化するためのコードを作成する必要があるメタプログラムを持っています。 I.反射ではクラス反射発光。 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