2011-02-14 31 views
0

我們有一個框架(類庫),它具有數據庫(CRUD)中的普通操作。我們還在WCF中開發了兩種服務來共享其中一些方法。我們選擇將這些服務託管到獨立的Windows服務中。這樣做我們的infra傢伙可以停止只有一個服務,而不接觸其他人。WCF使用DLL組件中的命名空間的問題

問題存在於服務中,實際上會引用這兩個(我們稱之爲「客戶端」)。現在我在添加到「客戶端」的每個引用上擁有相同的類,但是我無法將從一個WCF服務收到的對象發送給另一個,因爲對於「客戶端」,它們是兩個不同的對象。

請看看this image也許它會清除這些事情。

我無法從Service1獲取Person並將其發送回Service2(編譯錯誤)。我必須使用反射或其他東西嗎?

回答

0

您至少有兩個很好的選擇:

  • ,如果你要堅持當前的設置,你可以使用一個工具,如AutoMapper,以幫助您輕鬆地從一個Person類複製所有屬性值的其他 - 它通過匹配名稱上的屬性來實現,它的功能就像一個魅力,真的!

  • 另一種選擇是在一個單獨的程序集中共享共同點 - 服務和數據合同 - 以便您的服務以及客戶如何使用和引用相同的常規程序集。這樣,您可以避免客戶端創建兩種不同的新類型 - 兩種客戶端都會重新使用您現有的通用共享程序集的類型,因此不需要轉換/自動映射 - 類型將相同爲兩個客戶。

    這個你可以控制通信的兩端(包括服務和客戶端)的作品爲長,而且這兩個都是基於.NET的應用程序(我認爲這是對你的情況吧?)