我有一个大型接口的WCF服务。客户端解决方案有一个使用该服务的类库,但只有一种方法+一个数据协定。我不希望该类库项目中的服务引用,而只是在主项目中。
我在这个只有我需要的项目的类库中添加了一个接口。然后我公开了一个方法,它接受我转换为此接口的类型为object的参数'client'。每当我运行它时,我都会“无法施放”。我在想这是因为客户端上的界面缺少很多方法。
我查看了WCF https://github.com/cyanfish/Ninject.Extensions.Wcf.Client的Ninject库,但它假设您从服务器解决方案中包含了整个接口。我不想这样做,因为它有其他不相关的依赖项,我想保持这个类库干净。我也可以让客户端中的主项目处理服务调用并将结果传递给类库,但这样做会破坏它的目的。
我还有其他选择吗?
答案 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);
}