我需要一些指導。我有一個WCF服務,是一個更大的解決方案的一部分。目前,由於繼承問題,最終用戶必須引用太多的程序集。例如,這裏是我的基本的項目設置:避免將過多的程序集暴露給客戶端使用WCF服務
MyProject.Domain
namespace MyProject.Domain
{
public interface IFooable{}
public class Foo : IFooable{}
}
MyProject.Contracts
namespace MyProject.Contracts
{
[DataContract]
public class FooData : IFooable{}
[ServiceContract]
public class IFooService
{
IEnumerable<FooData> GetFoos();
}
}
MyProject.Proxies
namespace MyProject.Proxies
{
public class WCFClient{}
}
問題就出在這裏:
class ConsumerCode
{
private WCFClient = new WCFClient();
void consumeService()
{
// Compiler error. No reference to MyProject.Domain.IFooable
var foos = WCFClient.GetFoos();
}
這意味着最終的消費者誰使用FooData對象必須還包括一個參考MyProject.Domain,這很臭,因爲我不應該將業務邏輯層公開給WCF服務的最終客戶端。
有沒有辦法解決?
Contracts.FooData實現Domain.IFooable有什麼好處嗎?如果你刪除這個依賴項,那麼你的域名空間對象就不會被公開。 – alexm