我有这个现有的界面:
public interface IDataProvider
{
Stuff GetStuff();
void PutStuff(Stuff stuff);
}
我希望我的应用程序和测试能够从SQL数据库或WCF服务获取数据,该数据可以访问应用程序无法访问的数据库。我想针对IDataProvider
而不是具体的实施来编写我的应用程序。我已经创建了IDataProvider
的SQL实现,我想要做的是创建一个WCF服务,它是SQL实现的简单包装。
拥有SQLDataProvider:IDataProvider
和WCFDataProvider:IDataProvider
会有意义吗?服务提供者将是一个简单的包装器和SQLDataProvider
对象。我想要发生的是IDataProvider
中的更改强制SQL和WCF实现在编译之前实现接口更改。
[SericeContract]
public interface IWCFDataProviderService : IDataProviderService
{
Stuff GetStuff();
void PutStuff(Stuff stuff);
}
public class WCFDataProviderService : IWCFDataProviderService
{
public Stuff GetStuff() { ... }
public void PutStuff(Stuff stuff) { ..... }
}
所有内容编译都很好,但是在我的测试工具中添加了对WCFDataProviderService
的服务引用之后,即使有正确的方法,自动生成的服务客户端也不会实现IDataProviderService
: - /
我正在努力避免编写一个我必须单独维护的包装类。有什么想法吗?
谢谢!!!! :d