【问题标题】:Dependency Injection without full interface没有完整接口的依赖注入
【发布时间】:2013-09-17 00:32:26
【问题描述】:

我有一个带有大界面的 WCF 服务。客户端解决方案有一个使用该服务的类库,但只有一种方法 + 一种数据契约。我不希望该类库项目中的服务引用,而只希望在主项目中。

我向这个类库添加了一个接口,其中只有我需要的项目。然后,我公开了一个方法,该方法接受我转换到此接口的对象类型的参数“客户端”。每当我运行它时,我都会“无法投射”。我想这是因为客户端的接口缺少很多方法。

我查看了 WCF https://github.com/cyanfish/Ninject.Extensions.Wcf.Client 的 Ninject 库,但它假设您包含来自服务器解决方案的整个界面。我不想这样做,因为它有其他不相关的依赖项,我想保持这个类库干净。我也可以让客户端中的主项目处理服务调用并将结果传递给类库,但这有点违背了打破它的目的。

我还有其他选择吗?

【问题讨论】:

    标签: .net dependency-injection


    【解决方案1】:

    你可以让对象实现两个不同的接口,一个比另一个复杂,只需在 IOC 容器上注册你需要的类型,像这样:

        public class ImplementationObject: IComplexObject, ISimpleObject
        {
            public ImplementationObject(){}
    
            public string HelloWorld(string name)
            {
                return string.Format("Hello {0}!", name);
            }
        }
    
        public interface IComplexObject
        {
            string HelloWorld(string name);
        }
    
        public interface ISimpleObject
        {
            string HelloWorld(string name);
        }
    

    【讨论】:

    • 我没有考虑过这个选项,但是如果我必须修改后端,我可能最好将这个单一方法分解到一个单独的 svc 端点并以这种方式制作一个更小的接口。
    猜你喜欢
    • 1970-01-01
    • 2017-06-10
    • 2010-12-16
    • 2023-03-23
    • 2012-11-28
    • 2011-12-05
    • 2014-10-06
    • 1970-01-01
    相关资源
    最近更新 更多