Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EventAggregator和ServiceLocator问题_C#_Wpf_Prism_Eventaggregator - Fatal编程技术网

C# EventAggregator和ServiceLocator问题

C# EventAggregator和ServiceLocator问题,c#,wpf,prism,eventaggregator,C#,Wpf,Prism,Eventaggregator,我开始使用Prism和MVVM处理一个WPF项目,并尝试使用eventAggregator,但当执行下面这行时,会引发异常: IServiceLocator ob = ServiceLocator.Current; // This line causes a Null pointer exception EventAggregator = ob.GetInstance<IEventAggregator>(); IServiceLocator ob=ServiceLocator.Cu

我开始使用Prism和MVVM处理一个WPF项目,并尝试使用eventAggregator,但当执行下面这行时,会引发异常:

IServiceLocator ob = ServiceLocator.Current; // This line causes a Null pointer exception
EventAggregator = ob.GetInstance<IEventAggregator>();
IServiceLocator ob=ServiceLocator.Current;//此行导致空指针异常
EventAggregator=ob.GetInstance();
但我不明白我做错了什么,也许这是一件很简单的事情,但我已经为此挣扎了几个小时


希望有人能帮助我,提前谢谢

您缺少定位器的初始化代码

要么您使用Prism(是吗?),要么您需要正确设置引导程序-

或者您不使用Prism,只需手动设置定位器(例如在
Main
中):

打电话

var bootstrapper = new CustomBootstrapper();
bootstrapper.Run();

在应用程序的启动例程中。根据我的记忆,
UnityBootTrapper
IEventAggregator
注册为singleton,这样您就不必重复了。

您缺少定位器的初始化代码

要么您使用Prism(是吗?),要么您需要正确设置引导程序-

或者您不使用Prism,只需手动设置定位器(例如在
Main
中):

打电话

var bootstrapper = new CustomBootstrapper();
bootstrapper.Run();

在应用程序的启动例程中。据我记忆所及,
UnityBootTrapper
IEventAggregator
注册为singleton,这样您就不必重复了。

此代码在哪里执行,您使用的是哪个引导程序?例如,如果它是Unity,您可能应该使用
IUnityContainer
来解析实例,而不是
ServiceLocator
。我没有使用任何引导程序,但感谢Wiktor Zychla,我解决了我的问题,这段代码在哪里执行,您使用的是哪个引导程序?例如,如果是Unity,您可能应该使用
IUnityContainer
来解析实例,而不是
ServiceLocator
。我没有使用任何引导程序,但感谢Wiktor Zychla,我解决了我的问题,因为我是新使用prism的人,我不知道我必须初始化定位器。非常感谢你!!因为我刚使用prism,我不知道我必须初始化定位器。非常感谢你!!
public class CustomBootstrapper : UnityBootstrapper 
{
}
var bootstrapper = new CustomBootstrapper();
bootstrapper.Run();