可変数の引数を受け取り、それらの合計を返す ILAsm 関数を作成しています。
.class public auto ansi TestSentinel
{
.method public static vararg unsigned int64 Sum( /* all arguments are optional */ )
{
.locals init( value class [mscorlib]System.ArgIterator Args,
unsigned int64 Sum,
int32 NumArgs )
...
ldloc Sum
ret
}
}
dll は正常にコンパイルされますが、C# コードからこの関数を呼び出すことができません。で呼び出すと
var k = TestSentinel.Sum(1);
次のエラー メッセージが表示されます。
Error The best overloaded method match for 'TestSentinel.Sum(__arglist, ...)' has some invalid arguments
そして、他の数の引数を使用すると、wrong argument number
メッセージを受け取ります。ILAsm 関数を呼び出す正しい方法は何ですか?