没有完整接口的依赖注入

时间:2013-09-16 16:04:24

标签: .net dependency-injection

我有一个大型接口的WCF服务。客户端解决方案有一个使用该服务的类库,但只有一种方法+一个数据协定。我不希望该类库项目中的服务引用,而只是在主项目中。

我在这个只有我需要的项目的类库中添加了一个接口。然后我公开了一个方法,它接受我转换为此接口的类型为object的参数'client'。每当我运行它时,我都会“无法施放”。我在想这是因为客户端上的界面缺少很多方法。

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

我还有其他选择吗?

1 个答案:

答案 0 :(得分: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);
    }