访问 Web 服务中的继承类

本文关键字:继承 Web 服务 访问 | 更新日期: 2023-09-27 18:11:05

我有一个包含 3 个类的 Web 服务项目:

  • 1 抽象公共类(BaseClass.cs(
  • 以及 2 个从它继承的公共类 (InheritedClassA.cs 和继承类B.cs(

在我的项目(Test.csproj(中,我添加了对上述Web服务的Web引用,并将其命名为DAL。

当我尝试从我的测试项目中访问例如"BaseClass"时,我编写Test.DAL.BaseClass,它会识别它。

当我尝试做同样的事情从我的测试项目中访问我的任何继承类(继承类A和继承类B(时,它不起作用。

访问 Web 服务中的继承类

您需要通过在方法中返回这些类的实例来告知服务使用类 InheritedClassA 和 InheritedClassB,或者使用 XmlInclude 在引用中包含未使用的类。请确保在进行任何这些更改后更新您的 Web 引用。

您是否将 WCF 用于 Web 服务?

如果您使用的是DataContractSerializer(如果使用 WCF,则可能会使用(,则需要使用 KnownType 属性在服务说明中包含类型。

数据协定已知类型

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

Web 服务与 WCF 并不完全相同,但我发现很多人可以互换使用这些术语。