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 回答