在我们的许多观点中,我都有这段代码(或类似的代码):
private IEventAggregator eventAggregator;
Constructor()
{
eventAggregator = ServiceLocator.Current.GetInstance<IEventAggregator>();
...
}我从这文章中读到,ServiceLocator.Current可以抛出NullReferenceException (对构造函数不利),但我想知道GetInstance<>()方法是否可以返回null (或其他不一致的对象),这使得以后在其他方法中使用eventAggregator很危险。
注意:我对MVVM和WPF非常陌生
发布于 2012-07-06 03:14:05
如果servicelocator为null,那么可能存在一些不正确的统一设置。在正常情况下,这不应该是个问题。
话虽如此,我倾向于使用一种稍微不同的方式来获得服务程序。
例如,如果我有一个名为MyClass的类,我将使用统一依赖注入来传递服务对象(也称为统一容器)。我倾向于使用统一的解决功能,而不是GetInstance,但它们是相同的。
也有人说服务对象是反模式,但我不相信这种想法。http://blog.ploeh.dk/2010/02/03/ServiceLocatorIsAnAntiPattern.aspx
示例
public MyClass(IUnityContainer container)
{
var ea = container.Resolve<IEventAggregator>();
}https://stackoverflow.com/questions/11353585
复制相似问题