0

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

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

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

我还有其他选择吗?

4

1 回答 1

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);
    }
于 2013-09-16T16:32:26.480 回答