首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ServiceLocator.Current.GetInstance能返回null吗?

ServiceLocator.Current.GetInstance能返回null吗?
EN

Stack Overflow用户
提问于 2012-07-05 22:51:34
回答 1查看 10.7K关注 0票数 2

在我们的许多观点中,我都有这段代码(或类似的代码):

代码语言:javascript
复制
private IEventAggregator eventAggregator;

Constructor()
{
    eventAggregator = ServiceLocator.Current.GetInstance<IEventAggregator>();
    ...
}

我从文章中读到,ServiceLocator.Current可以抛出NullReferenceException (对构造函数不利),但我想知道GetInstance<>()方法是否可以返回null (或其他不一致的对象),这使得以后在其他方法中使用eventAggregator很危险。

注意:我对MVVM和WPF非常陌生

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-06 03:14:05

如果servicelocator为null,那么可能存在一些不正确的统一设置。在正常情况下,这不应该是个问题。

话虽如此,我倾向于使用一种稍微不同的方式来获得服务程序。

例如,如果我有一个名为MyClass的类,我将使用统一依赖注入来传递服务对象(也称为统一容器)。我倾向于使用统一的解决功能,而不是GetInstance,但它们是相同的。

也有人说服务对象是反模式,但我不相信这种想法。http://blog.ploeh.dk/2010/02/03/ServiceLocatorIsAnAntiPattern.aspx

示例

代码语言:javascript
复制
public MyClass(IUnityContainer container)
{
    var ea = container.Resolve<IEventAggregator>();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11353585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档