2009-09-08 34 views
0

這是我正在處理的一個有點微妙的問題,並希望得到任何幫助。使用Silverlight WCF服務中的.NET 2.0類庫,公共屬性保持未暴露

我們有我們的項目在生產模式,用.NET 2.0構建。我們最近開發了2.0解決方案外部的Silverlight應用程序,並且它與WCF服務「交談」。此服務使用我們從2.0解決方案發布文件夾中複製的DLL,以便從我們的原始解決方案中訪問功能。

WCF服務正在公開從我們的2.0解決方案中產生的幾種方法和對象。顯然,它在內部使用[DataContract]和[DataMember],這些在我們的原始解決方案中不可用(因爲它是.NET 2.0,此時不能升級到3.5)。幸運的是,WCF能夠將我們的可序列化對象視爲它們被定義爲契約,但出於某種奇怪的原因,只有成員變量(即使定義爲私有!)正在被序列化;屬性,甚至可設置和公開從未序列化。

我們需要暴露的對象類有它們定義的[Serializable()]。我環顧四周,無法找到一個很好的解決方案/解釋。它可能與.NET 3.0/3.5如何「看到」我的2.0對象(它假定[DataMember]只在變量上而從不在屬性上)有關。

我的問題主要是如何只公開公有屬性,而不是私有變量?

在此先感謝您對此的任何見解。

Itamar。

回答

0

原因尚不清楚。我們通過從暴露的對象(駐留在我們通過WCF項目使用的已編譯的DLL中)派生出來,然後重新創建我們需要的屬性和輔助函數,繞過了這個問題。我們還在需要的地方添加新的屬性或成員變量。然後我們在內部使用這個新對象(這有時需要一個專門的構造函數來進行一些複製或調整)。不理想,但工作。