2011-10-12 98 views
2

我有一個包含3類Web服務項目:訪問繼承類的web服務

  • 1抽象公共類(BaseClass.cs)
  • 和2個公共類,繼承它(InheritedClassA。 CS和 InheritedClassB.cs)

在我的項目(Test.csproj),我添加了一個Web引用上面提到的網絡服務,並把它命名爲DAL。

當我試圖從我的測試項目訪問例如「BaseClass」,我編寫Test.DAL.BaseClass,它會識別它。

當我嘗試做同樣的事情來訪問我的Test項目中的任何繼承類(InheritedClassA和InheritedClassB)時,它不起作用。

回答

2

您需要通過在方法中返回這些類的實例來告訴服務使用類InheritedClassA和InheritedClassB,或者使用XmlInclude將未使用的類包含在引用中。進行任何這些更改後,請務必更新您的Web引用。

1

您是否將WCF用於Web服務?

如果您使用的是DataContractSerializer(如果您使用的是WCF,您可能會這樣做),那麼您希望使用KnownType屬性在服務描述中包含類型。

Data Contract Known Types

[DataContract] 
[KnownType(typeof(InheritedClassA))] 
[KnownType(typeof(InheritedClassB))] 
public abstract class BaseClass 
{ 
    // properties 
} 

的Web服務是不是真的一樣WCF,但我發現,很多人使用術語互換。

+0

你錯了。術語「Web服務」是通用的。它包括ASMX Web服務以及WCF。 –

+1

@JohnSaunders如果我誤以爲你說網絡服務*和WCF一樣?或者我的答案在其他方面不正確?包括OP可能不使用WCF的聲明是否是錯誤的? –

+0

您的陳述「Web服務與WCF不是一回事」做出錯誤區分。 –