0

SharpObservationフレームワークを使用して、弱いイベント参照を動的に生成しています。デリゲート内からアクションを参照すると、TypeAccessException が発生します。

メソッド 'DynamicClass.Construct(System.EventHandler 1<XYZ>, System.Action11<XYZ>>, System.Delegate)' によるタイプ 'System.Action3c__DisplayClass6,System.Object,XYZ>' へのアクセスに失敗しました。

アクションを削除すると、問題なく動作します。アクションの本文全体をコメントアウトしようとしましたが、それでも失敗します。アクションからコンパイラが作成したメソッドがプライベートまたは内部または外部からアクセスできないようにするための何かと関係があると思います。どうすればこれを回避できますか?

  Action eventCompleted = () =>
    {
        SomeMethod();
    };

  EventHandler<XYZ> eventDelegate = delegate
    {          
      System.Windows.Application.Current.Dispatcher.BeginInvoke(eventCompleted);
    };

  newItem.Event += eventDelegate.MakeWeak();
4

1 に答える 1

0

JIT アクセス チェックを行わないようにソースを変更する必要がありました。これにはいくつかのセキュリティ上の問題があります。(true パラメータを追加)

var dynamicMethod = new DynamicMethod("Construct", typeof(TDelegate), args, true);
于 2012-05-10T17:01:34.827 に答える