2016-11-28 58 views
2

在我的客戶端,我想從我的WCF服務C#類中的默認C#構造函數。我們希望這樣做的原因是在客戶端使用服務器端類的默認值。從我已經做了搜索,有2種方式去了解這一點:如何從C#中的客戶端服務器獲取構造函數?

  1. 當我需要我做一個服務器調用返回我的默認實例對象的默認實例
  2. 我創建了一個客戶端從服務器端繼承C#類並複製粘貼構造函數並使用此構造函數

是其中一個「更好」選項嗎?或者這是否嚴重依賴於多久我需要一個對象的新實例?

編輯:我們嘗試使用[System.Runtime.Serialization.OnDeserialized]seen here但它不起作用。我們還沒有使用DataContract屬性在我們班,我們使用ServiceKnownType代替

+1

用這種方法你WCF的任何客戶端將依賴於「代理」類由您提供。他們不能獨立使用WCF。另一個觀點 - 在構造函數中有一些邏輯不是一個好主意 - 也許你可以重新設計你的類? – Fabio

+0

@Fabio我們有我們想要保留的類的默認值。我們嘗試使用'[System.Runtime.Serialization.OnDeserialized]'[here](https://stackoverflow.com/questions/8566204/datacontract-default-datamember-value),但它不起作用。我們沒有在我們的類中使用'DataContract'屬性,我們使用'ServiceKnownType'而不是 – philr

回答

0

我想你可以嘗試使用OnDeserializing屬性

[System.Runtime.Serialization.OnDeserializing] 
private void OnDeserializing(StreamingContext ctx) 
{ 
    // Here set your default values 
} 
+0

我也嘗試過使用它,但它沒有工作..我認爲這是因爲我們使用'[ServiceKnownType] – philr

相關問題