gpt4 book ai didi

c# - IOC 容器 - WCF 服务 - 我应该通过构造函数实例化所有依赖项吗?

转载 作者:太空狗 更新时间:2023-10-29 22:28:29 25 4
gpt4 key购买 nike

我有一个 WCF 服务,它具有一些不同的职责,但它为任何与我的代码交互的人提供了一个入口点。为了简单起见,假设有两种方法

    private IMethodAHelper _methodA;
private IMethodBHelper _methodB;

public MyService(IMethodAHelper methodA, IMethodBHelper methodB)
{
_methodA = methodA;
_methodB = methodB;
}

public void MethodA() {
_methodA.CallThis();
}

public void MethodB() {
_methodB.CallThis();
}

因为消费者只会出于一种原因调用服务,MethodA 或 MethodB,IOC 容器会不必要地启动所有依赖项是否会成为一个问题?我想提供一个入口点,所以我不想拆分服务,但是当服务的每个消费者只需要一个子集时,启动所有依赖项似乎有点浪费。

我想到的另一种方式是

    public void MethodA() {
var methodA = ObjectFactory.GetInstance<IMethodAHelper>();
methodA.CallThis();
}

这允许每个“路径”提出它需要的依赖关系,但是,这使得编写单元测试变得更加困难。有没有人有什么建议?启动所有依赖项是一个多大的问题?在服务的第一个入口点之后,通过构造函数注入(inject)依赖项是有意义的,但在第一个入口点,推荐的方法是什么?

最佳答案

您应该坚持使用构造函数注入(inject),而不用担心构造开销。 It's very rarely an issue, and if it is, there are elegant ways to deal with it .

关于c# - IOC 容器 - WCF 服务 - 我应该通过构造函数实例化所有依赖项吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5883748/

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