汎用デリゲートから名前付きデリゲートに変換しようとしています。
結果は次のようになります (有効な C# ではありません)。
Action<CustomClass> act = ???;
CustomDelegate d = act;
私が試してみました
CustomDelegate d = act.Invoke;
CustomDelegate d = new CustomDelegate( act );
CustomDelegate d = new CustomDelegate( x => act(x) );
CustomDelegate d = new CustomDelegate( act.Invoke );
これらはすべて実行時に失敗しArgumentException
、エラーが発生します
インスタンス メソッドへのデリゲートは、null の 'this' を持つことはできません。
私のコードではないスタックのトップは次のとおりです。
System.MulticastDelegate.ThrowNullThisInDelegateToInstance() で
System.MulticastDelegate.CtorClosed (オブジェクト ターゲット、IntPtr methodPtr) で
例外が発生しないようにデリゲートを変換するにはどうすればよいですか?