UnityContainer 和构造函数参数

发布于 2024-10-04 21:04:11 字数 273 浏览 2 评论 0原文

我有一个“Adapter”类,它包装一个名为“X_Session”的对象。此适配器需要 ILogger 和 ICacheManager。

我的想法是使用 Unity 定义此类,并让它解析作为构造函数输入放入的两个接口。

那么 X_Session 对象呢?它不是由 Unity 注册的,因为我需要自己创建它,因为它的构造函数需要我从 QueryString 收集的输入参数。

我是否解析 Adpater 类然后设置 X_Session 对象?还有其他更好的方法吗?

谢谢

I have an "Adapter" class that wraps an object called "X_Session". This adpater expects an ILogger and ICacheManager.

The way I thought of it is by defining this class with Unity and let it resolve both interfaces that are put in as constructor inputs.

What about the X_Session object? It is not registered by Unity, as I need to create it myself because its constructor requires input parameters that I gather from QueryString.

Do I resolve the Adpater class then set the X_Session object? Other better way?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

披肩女神 2024-10-11 21:04:11

同样,使用抽象工厂很简单:

public interface IAdapterFactory {
   Adapter Create(ISession session);
}

public class AdapterFactoryImpl : IAdapterFactory  {
   public AdapterFactoryImpl(IDependency dep) {
       this._dep = dep;
   }

   public Adapter Create(ISession input) { 
     return new Adapter(_dep, input);
   }
}

您只需在 Unity 中注册工厂即可。

Again, with an abstract factory is simple:

public interface IAdapterFactory {
   Adapter Create(ISession session);
}

public class AdapterFactoryImpl : IAdapterFactory  {
   public AdapterFactoryImpl(IDependency dep) {
       this._dep = dep;
   }

   public Adapter Create(ISession input) { 
     return new Adapter(_dep, input);
   }
}

You have to register in Unity only the factory.

在风中等你 2024-10-11 21:04:11

另一个想法是在运行时在 Unity 容器内注册 X_Session 对象,然后让 Unity 注入所有依赖项。

Another idea would be registering the X_Session object inside the Unity container at runtime, then having Unity injecting all the dependencies.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文