2011-08-04 80 views
3

我在我的WCF接口類中爲每個操作約定使用[ServiceKnownType(typeof(Document))]。我想避免使用此KnownType。而是在web.config中使用DeclaredTypes。我可以獲得有關如何在Web.config文件中配置DeclaredTypes的任何幫助。在WCF中使用聲明類型

回答

3

在配置中添加已知類型的選項僅適用於數據合同,而不適用於服務合同。如果其中Document從派生類型始終是相同的(而不是System.Object),你可以通過使用配置選項(在MSDN更多信息),這將是這個樣子:

<configuration> 
    <system.runtime.serialization> 
    <dataContractSerializer> 
     <declaredTypes> 
     <add type="MyNamespace.DocumentBase, MyAssembly, Version=..."> 
      <knownType type="MyNamespace.Document, MyAssembly, Version=..."/> 
     </add> 
     </declaredTypes> 
    </dataContractSerializer> 
    </system.runtime.serialization> 
</configuration> 

如果這不適用,那麼另一種選擇是將此選項傳遞給DataContractSerializer構造函數,您可以通過使用可應用於整個服務的某些行爲來完成此任務。用NetDataContractSerializer代替DataContractSerializer這個帖子對你來說是一個很好的起點(而不是替換串行器,只是返回另一個DataContractSerializer實例,但總是將typeof(Document)添加到傳遞給它的已知類型中。