Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 针对所有继承类类型的单个WCF服务_C#_Wcf_Inheritance_Webservice Client - Fatal编程技术网

C# 针对所有继承类类型的单个WCF服务

C# 针对所有继承类类型的单个WCF服务,c#,wcf,inheritance,webservice-client,C#,Wcf,Inheritance,Webservice Client,我有一个基类结构,如下所示 class Mammal { ... } class Human : Mammal { ... } class Tiger : Mammal { ... } class Snake : Mammal { ... } [OperationContract(Name = "DoStuffTo")] [WebInvoke] String DoStuffTo(Mammal mammal); 由于服务仅基于哺乳动物类中的属性执行操作,因此我认为没有必要为每种类型创建单独的w

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

class Mammal { ... }
class Human : Mammal { ... }
class Tiger : Mammal { ... }
class Snake : Mammal { ... }
[OperationContract(Name = "DoStuffTo")]
[WebInvoke]
String DoStuffTo(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();
该服务的签名如下

class Mammal { ... }
class Human : Mammal { ... }
class Tiger : Mammal { ... }
class Snake : Mammal { ... }
[OperationContract(Name = "DoStuffTo")]
[WebInvoke]
String DoStuffTo(Mammal mammal);

请查看
ServiceKnownTypeAttribute

看看这篇文章


我现在就做。为了清楚起见,我对我的问题进行了一些编辑,以举例说明我的最佳目标。