因此,我創建了幾個WCF服務。每個返回列表中的某種類型的數據合同。但是,這些數據合同具有其他數據合同的列表屬性。我正試圖實現延遲加載數據合同集合。在WCF中使用DataContract代理
我想過的是在客戶端實現一個類,該類繼承了具有集合屬性的數據契約,並且setter和getter方法調用該服務並獲取實際的集合項。
我的問題是:如何讓基礎通道返回實現數據合同的類而不是實際的數據合同?我如何控制基本頻道返回的內容?
我的服務客戶端看起來是這樣的:
public class ServiceClient : BaseClient<IServiceClient>
{
public IList<DataObject> FindAll()
{
// how to control what base.Channel.FindAll return during deserialization.
return base.Channel.FindAll();
}
}
注意,我不想做這樣的事情:
public class ServiceClient : BaseClient<IServiceClient>
{
public IList<DataObject> FindAll()
{
var dtos = base.Channel.FindAll();
var dtoProxies = Mapper.Map<DataObject, DataObjectProxy>();
return dtoProxies;
}
}
我想辦法讓WCF自動返回List<DataObject>
哪些元素實際上是DataObjectProxy
。
有關如何做到這一點的任何建議?
謝謝!
編輯:樣品數據對象類:
[DataContract]
public class DataObject
{
public virtual List<OtherDomainObject> SubItems { get; set; }
}
public class DataObjectProxy : DataObject
{
public override List<OtherDomainObject> SubItems
{
get { // Custom way to retrieve collection... }
set { // Etc.. }
}
}