获得例外"价值不能为空"在通过Unity

时间:2016-01-18 12:53:38

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

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

  

消息"值不能为空。\ r \ n \ nParameter name:container"         来源" Microsoft.Practices.Unity"串

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

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");                                
        }
    }
}

我在 ModuleA ViewModelA 中创建了一个ICommonService实例。它运作正常:

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

然后我想在 ModuleB viewModelB 中读取此数据。这段代码抛出异常:

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

例外说:

  

消息&#34;值不能为空。\ r \ n \ nParameter name:container&#34;         来源&#34; Microsoft.Practices.Unity&#34;串

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

1 个答案:

答案 0 :(得分:1)

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