gpt4 book ai didi

c# - 将参数传递给 IServiceLocator

转载 作者:太空狗 更新时间:2023-10-30 01:26:17 24 4
gpt4 key购买 nike

我有一个 ViewModel 类,我想通过 unity ServiceLocator 解析它,但是我的 viewModel 需要构造函数的参数。参数的类型是我的应用程序中的实体之一(客户对象),而不是某些服务实现。我知道针对 Unitycontainer 本身进行编码我可以传递这样的参数:

 _container.Resolve<CustomerDetailViewModel>(new ParameterOverrides {{"customer", customer}});

但如果我不能直接访问容器,我需要像这样通过 ServiceLocator:

(CustomerDetailViewModel)ServiceLocator.Current.GetInstance<CustomerDetailViewModel>();

但是使用第二种方法我无法将任何参数传递给 ServiceLocator。有什么办法可以做到这一点?从 ServiceLocator 获取 Container 的实例然后使用它是“错误的”吗?

最佳答案

问题是您正试图将一个实体(在本例中为 Customer)注入(inject)到一个类中。实体是短暂存在的对象,它们往往不适合被注入(inject)。

不是注入(inject) Customer,而是注入(inject) ICustomerRepository 服务。您可以在应用程序的启动路径中注册一个ICustomerRepository实现,这样您就不必直接调用容器,这使得应用程序设计更简洁,单元测试更容易。

关于c# - 将参数传递给 IServiceLocator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5310714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com