2009-11-30 72 views

回答

1

我不完全明白你要做什麼 - 你想從服務器發送一個POCO到客戶端:這意味着,你需要創建POCO類並將其裝飾爲[DataContract]並裝飾其想要使用[DataMember]序列化的成員。

在客戶端,您將得到一個客戶端代理類,它具有相同的序列化連線格式 - 但自從WCF使用XML模式作爲最低公共標準進行序列化後,您無法發送諸如接口之類的東西,因此只有具體的實例類。而在客戶端上,你不會獲得與服務器上相同的類 - 只是具有相同「外觀和感覺」(以及序列化格式)的類。

所以我真的不知道你想如何和在哪裏掛鉤。

有一兩件事你可以做的是建立一個基於

public interface IClientMessageInspector 
{ 
    void AfterReceiveReply(ref Message reply, object correlationState); 
    object BeforeSendRequest(ref Message request, IClientChannel channel); 
} 

會趕上「AfterReceiveReply」事件客戶端消息檢查,然後你會採取系列化POCO類跨線的到來,並將其轉換爲另一個也會實現INotifyPropertyChanged處理程序的類。

參見如何編寫和WCF處理郵件檢查員一些博客文章:

0

你說的是攔截的對象CreateChannel從你的ChannelFactory轉向了嗎?

你可以覆蓋BaseChannelFactory並修改它返回的ClientBase對象嗎?

0

微軟的SVCUTIL.EXE可以自動生成代理數據類,INotifyPropertyChanged正確實施。查看enableDataBinding參數。這不完全是你要求的,但可能無論如何可以解決你的需求。