gpt4 book ai didi

c# - 在 Unity 中使用规则解决?

转载 作者:太空宇宙 更新时间:2023-11-03 14:14:04 26 4
gpt4 key购买 nike

我有接口(interface) IRepository 统一映射到类 GenericRepository。

IOC.Container.RegisterType<IRepository, GenericRepository>();

(GenericRepository 采用 ObjectContext( Entity Framework 上下文)来执行其数据操作)

问题是我需要几个不同的 GenericRepository 实例。 (我的解决方案中有几个 Entity Framework 模型)

在业务层逻辑的每个部分中,我需要解析 IRepository 并获取为对应于该部分业务层逻辑的模型初始化的 GenericRepository。

我需要一些方法来设置选项...我不知道这是我独有的问题还是其他人也遇到过这个问题。

有没有办法告诉 Unity 如何做到这一点?

注意:我不希望将 ObjectContext 的实例作为参数传递给 Resolve 方法。如果我这样做,那么我就破坏了存储库模式的目的(抽象数据层以便我可以轻松地进行单元测试)。

最佳答案

我认为这会起作用:

IOC.Container.RegisterType<IRepository, GenericRepository>("ModelOne", 
new InjectionConstructor(new ModelOneEntities());
IOC.Container.RegisterType<IRepository, GenericRepository>("ModelTwo",
new InjectionConstructor(new ModelTwoEntities());

.....

IRepository modelOneRepository = IOC.Container.Resolve<IRepository>("ModelOne");

基本上,您为每个注册命名并提供使其不同的构造函数参数。然后在解析时使用该名称(尽管我建议使用 const 值而不是魔术字符串)。

关于c# - 在 Unity 中使用规则解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7000497/

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