用于所有继承类类型的单个WCF服务

本文关键字:单个 WCF 服务 类型 继承 用于 | 更新日期: 2023-09-27 18:24:48

我有一个基类结构,如下所示。

class Mammal { ... }
class Human : Mammal { ... }
class Tiger : Mammal { ... }
class Snake : Mammal { ... }

由于该服务仅基于Mammal类中的属性执行操作,因此我认为没有必要为每种类型创建单独的web方法(否则也可以使用条件语句)。

我遇到的错误是,我需要声明一个翻译或类似的东西,鉴于我记得有一次关于它的讨论(不过现在找不到),我想知道这是否可行。我记得有人告诉我,在使用WCF时,不可能重新创建继承结构。

有没有办法解决这个问题,或者我应该简单地保留一些公开的服务,这些服务执行相同的调用,但每个服务都接收不同类型的输入?

编辑

为了澄清我在寻找什么,我想运行以下代码。

Human human = new Human { ... };
Tiger tiger = new Tiger { ... };
Snake snake = new Snake { ... };
ServiceClient client = new ServiceClient();
client.DoStuffTo(human);
client.DoStuffTo(tiger);
client.DoStuffTo(snake);
client.Close();

服务的签名如下。

[OperationContract(Name = "DoStuffTo")]
[WebInvoke]
String DoStuffTo(Mammal mammal);

用于所有继承类类型的单个WCF服务

查看ServiceKnownTypeAttribute

  • http://msdn.microsoft.com/en-us/library/system.servicemodel.serviceknowntypeattribute.aspx

在这篇文章中

  • http://msdn.microsoft.com/en-us/magazine/gg598929.aspx