0

我想用容器注册 ShellModel,所以我可以在另一个模块中的 ViewModel 中解决它,然后我可以在 ViewModel 中更改窗口样式。但是我无法在 ViewModel 中获得相同的 ShellModel 实例,它总是返回 ShellModel 的新实例。所以我在下面写了一个简单的测试,我对此感到困惑。

public Shell()
    {
        InitializeComponent();
        var shellModel = new ShellModel();
        IUnityContainer container = new UnityContainer();
        container.RegisterInstance<ShellModel>(shellModel);
        Console.WriteLine(container.Resolve<ShellModel>().GetHashCode());//41837403
        Console.WriteLine(container.Resolve<ShellModel>().GetHashCode());//41837403
        IUnityContainer newcontainer = new UnityContainer();
        Console.WriteLine(newcontainer.Resolve<ShellModel>().GetHashCode());//3634967
        Console.WriteLine(newcontainer.Resolve<ShellModel>().GetHashCode());//29355815
    }
4

1 回答 1

2

您正在使用两个容器,并且由于您没有在第二个容器中注册实例,Unity 正在返回一个新的 Shell(View?)Model 实例。

于 2013-05-10T10:44:24.153 回答