我有几个派生类B
和C
从相同的基类继承A
的:每个派生类的Web API方法还是只有一种可以提供全部服务的方法?
public class A {}
public class B : A {}
public class C : A {}
我需要创建一个HTTP POST API方法要消耗的每个具体类的。有一种方法接受基类或为每个派生类创建单独的方法会更好吗?
[Route("send/Base")]
[HttpPost]
public IHttpActionResult SendPricingLetter(A model)
{
// do some type checking and perform logic
}
我用一个厂做类型检查并为每个类设置相应的字段,看起来像它可以变得不可收拾很快。
或者
[Route("send/ConcreteB")]
[HttpPost]
public IHttpActionResult SendSomeOther(B model)
{
// No type checking required and perform logic
}
[Route("send/ConcreteC")]
[HttpPost]
public IHttpActionResult SendStuff(C model)
{
// No type checking required and perform logic
}
我不知道你的示例代码是否太抽象。 “SendPricingLetter”方法将始终为您提供'A'对象,而不是'B'或'C'。你会做什么样的“某种类型检查”? –
我可以发布任何继承自A的对象。与任何需要基类作为参数的方法一样。然后我必须进行一些检查来找出派生类。 –
请您更新您的问题并解释此测试应如何工作?你得到一个类型为'A'的对象,但是没有任何迹象表明最初发布的对象是'B'还是'C'。这是一个网络电话。由于序列化,您丢失了继承信息。你收到的是一个序列化的'B'或'C';然而,由于反序列化,你作为参数得到的是一个普通的'A'。 –