2012-08-01 42 views
3

當我使用svcutil或其他代理生成器時,它會在客戶端創建適當的類。我想知道存儲這些類以避免衝突的最佳方式是什麼。通過wcf傳輸存儲類

  • 在其他一些「通用」項目中,並從代理中刪除生成的類?
  • 或者只是使用服務中的原始類和代理中的重複的代碼?
+0

我不明白你的問題是什麼,你能解釋一下更詳細一點嗎?你想避免使用生成的類嗎?編譯期間是否會發生衝突,因爲您還引用了原始的服務器端類所屬的程序集? – 2012-08-01 11:29:41

+0

@AndersAbel是的,我不知道應該只有在服務器訪問原來的,並複製這與svcutil clases?或者提供從客戶端和服務器端訪問原創並刪除生成的類 – Saint 2012-08-01 11:32:20

回答

3

有兩種方法可以處理WCF客戶端的服務和數據合同類的代碼。

  • 使用svcutil.exe生成所有內容。從客戶項目到服務大會沒有任何參考。只需使用由svcutil生成的類。
  • 直接引用包含類型的程序集。我有時爲我的DTO類使用一個單獨的程序集,即從客戶端和服務器引用。使用svcutil生成客戶端代碼時,請使用/reference:<file path>選項告訴svcutil重新使用現有部件中的類型,而不是重新生成它們。

如果您引用原始程序集,但不將其與/reference一起傳遞給svcutil,則最終會產生一系列衝突。我想這就是發生在你身上的事。

+0

是的,我知道現在我的問題在哪裏。我只想知道哪種方式「更好」 – Saint 2012-08-01 11:40:40

+0

這取決於您的要求。如果你有例如數據驗證代碼在您的DTO中,在客戶端提供該功能也是一個優勢。如果你在客戶端進行數據綁定,你可能會受益於'svcutil'免費獲得的'INotifyPropertyChange'實現。 – 2012-08-01 11:42:43