好的,情況是我們有一個類,PatientDto
和由Castle生成的DynamicProxy,PatientDtoProxy
。如何「真正」將DynamicProxy恢復到原始類型(通過WCF發送)
我們在Silverlight客戶端中使用此代理,然後希望通過WCF服務調用將其發送回服務器。
WCF服務合同期望PatientDto
(即不是代理服務器),並且如果您嘗試發送其他任何內容,正如預期的那樣。從本質上講,我們覺得我們應該將它「鑄造」回PatientDto
以使事情發揮作用......但實際上,即使您將參考文獻歸類爲PatientDto,它也不會改變任何內容 - WCF仍然將內存中的對象視爲PatientDtoProxy
並炸燬。
很明顯,做一個深入複製到新的PatientDto
是一個選項(並且工作),但一個不愉快的。任何我們沒有想到的技術?
它是一個基於接口的代理或基於類的嗎?如果後者,您的代理實例是否已經從PatientDto繼承? – 2010-08-05 16:52:24
基於類,而且你是對的 - WCF仍然抱怨。我假設它使用對象本身的反射,並且看到它實際上是一個'PatientDtoProxy'...儘管我們已經將基準類型的引用鑄造了...這就是難題 – Bobby 2010-08-05 16:56:59
是的,很棘手。理想情況下,您可以在基類上設置KnownTypes屬性以包含子類。顯然,這是不可能的動態創建的代理。 :( – 2010-08-06 01:08:11