【问题标题】:Getting exception "Value cannot be null" while resolving an object by Unity通过 Unity 解析对象时出现异常“值不能为空”
【发布时间】:2016-01-18 22:06:13
【问题描述】:

我在使用 Unity 容器解析对象时遇到了异常:

消息“值不能为空。\r\n参数名称:容器” 来源“Microsoft.Practices.Unity”字符串

我有一个 Prism 应用程序,其中我有 ServiceModuleServiceModule只有接口及其实现:

public interface ICommonService
{
    string SomeStorage { get; set; }        
}

public class CommonService : ICommonService
{
    string fooStorage=DateTime.Now.ToString();
    public string FooStorage
    {
        get
        {
           return fooStorage;
        }
        set
        {
            fooStorage = value;
            OnPropertyChanged("FooStorage");                                
        }
    }
}

我在 ModuleAViewModelA 中创建了 ICommonService 的单个实例。没问题:

unityContainer = new UnityContainer();
unityContainer.RegisterType<ICommonService, CommonService>(new ContainerControlledLifetimeManager());
IMyService someFoo = unityContainer.Resolve<ICommonService>();
someFoo.FooStorage = "AAAOOOBBB";

然后我想在 ModuleBviewModelB 中读取这些数据。并且这段代码抛出了一个异常:

ICommonService someFoo = unityContainer.Resolve<ICommonService>();
string str=someFoo.FooStorage;

异常说:

消息“值不能为空。\r\n参数名称:容器” 来源“Microsoft.Practices.Unity”字符串

我做错了什么?任何帮助将不胜感激!

【问题讨论】:

  • 什么是IMyServiceMyService
  • ICommonyService 还是IMyService
  • viewModelB,如何获取容器的实例? unityContainer 的值为 null 吗?可以调试验证吗?

标签: c# wpf inversion-of-control unity-container prism


【解决方案1】:

根据您收到的错误消息,unityContainer 的值很可能是null。确保您正确初始化它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-25
    • 2017-04-16
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 2015-03-11
    • 2017-10-28
    • 1970-01-01
    相关资源
    最近更新 更多