在我们的许多 View 中,我都有这段代码(或类似代码):private IEventAggregator eventAggregator;Constructor(){ eventAggregator = ServiceLocator.Current.GetInstance<IEventAggregator>(); ...}我从this帖子中了解到ServiceLocator.Current可以引发NullReferenceException(对构造函数不利),但我想知道GetInstance ()方法是否可以返回null(或其他一些不一致的对象),从而使eventAggregator危险于以后在其他方法中使用。 注意:我对MVVM和WPF还是很陌生 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 如果servicelocator为null,则可能是某些未正确设置为统一的东西。在正常情况下,这不是问题。话虽如此,我倾向于使用一种略有不同的方式来到达服务定位器。例如,如果我有一个名为MyClass的类,则我将使用unity依赖注入(inject)将servicelocator传递进来(也称为unity中的容器)。而且我倾向于使用统一的Resolve功能而不是GetInstance,但是它们是相同的。也有人说servicelocator是反模式,但我不赞成这种思路。 http://blog.ploeh.dk/2010/02/03/ServiceLocatorIsAnAntiPattern.aspx例子public MyClass(IUnityContainer container){ var ea = container.Resolve<IEventAggregator>();}关于c# - ServiceLocator.Current.GetInstance是否可以返回null?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11353585/ (adsbygoogle = window.adsbygoogle || []).push({});
10-09 06:00