gpt4 book ai didi

silverlight - AppDomain.GetData 方法不可访问?

转载 作者:行者123 更新时间:2023-12-03 07:55:58 25 4
gpt4 key购买 nike

我正在开发一个 Silverlight 3 应用程序,我想将所有意外错误处理委托(delegate)给一个我命名为 ErrorHandler 的类的单个实例。 .这个类有一个名为 HandleApplicationException 的方法。 ,以及一些其他方法来处理更专业的错误。

在我的应用程序中,我使用 Unity 进行依赖注入(inject),但由于我希望即使尚未设置 Unity 容器也可以使用错误处理对象,所以我在 App 类构造函数中将该对象注册为 AppDomain 全局数据,这样:

public App()
{
this.Startup += this.Application_Startup;
this.Exit += this.Application_Exit;
this.UnhandledException += this.Application_UnhandledException;

AppDomain.CurrentDomain.SetData("ErrorHandler", new ErrorHandler());

InitializeComponent();
}

如果出现未处理的异常,我会检索错误处理程序对象并以这种方式使用它:
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
e.Handled = true;

var errorHandler = AppDomain.CurrentDomain.GetData("ErrorHandler") as ErrorHandler;
Debug.Assert(errorHandler != null, "No ErrorHandler registered.");
errorHandler.HandleApplicationException(e.ExceptionObject);
}

问题是 AppDomain.GetData Application_UnhandledException 中的方法方法正在抛出 MethodAccessException。我不明白为什么,因为我只是在 AppDomain 类上调用一个公共(public)方法。我在其他应用程序中使用了类似的方法,并且效果很好(无论如何这些都不是 Silverlight 应用程序)。

发生什么了?难道我做错了什么?

最佳答案

好,我知道了。来自 MSDN documentation :

This member has a SecurityCriticalAttribute attribute, which restricts it to internal use by the .NET Framework for Silverlight class library. Application code that uses this member throws a MethodAccessException.



我已将错误处理程序存储在 App 类的公共(public)属性中,然后使用 ((App)Application.Current).ErrorHandler 访问它.我不喜欢以这种方式做事,但我想在这种特殊情况下是可以的。

关于silverlight - AppDomain.GetData 方法不可访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1699934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com