首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Get by Type或Get by ID

使用Get by Type或Get by ID
EN

Stack Overflow用户
提问于 2011-04-07 01:51:02
回答 6查看 184关注 0票数 2

我有一个名为GetObjectsRelatedToAType的方法,例如GetCarsRelatedToDealership。从web服务或一般方法签名的角度来看,哪种方法更好:

代码语言:javascript
复制
List<Cars> GetCarsRelatedToDealership( Dealership dealership );

代码语言:javascript
复制
List<Cars> GetCarsRelatedToDealership( id dealership );

我倾向于喜欢对象方法,因为它在确保方法的源输入有效方面更加有力。想法/建议?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-04-07 02:02:17

对于web服务,我尝试最小化通过网络发送的数据量。如果你还需要一个方法,我可能会让成员方法"GetRelatedCars“用于”经销商“类/接口。当web服务调用到来时,您可以验证它是一个真正的“经销商”(调用者有权使用它),方法是根据id获取该对象,并对该对象使用"GetRelatedCars“方法。

票数 2
EN

Stack Overflow用户

发布于 2011-04-07 01:54:34

ID是该方法运行所需的唯一信息吗?如果是这样的话,我就不管它了。

票数 5
EN

Stack Overflow用户

发布于 2011-04-07 02:03:56

对象方法存在问题。

代码语言:javascript
复制
Dealership dealership;
GetCarsRelatedToDealership(dealership); // dealership is null

var dealership = new Dealership();
GetCarsRelatedToDealership(dealership); // dealership has no id

在这些情况下,对象不会为您提供任何优于id的优势。id可能是错误的,但您可以验证这一点。该对象使事情变得更加复杂。

在处理服务时,我会创建一对请求/响应类。这使您可以确保您的签名永远不需要更改。您的请求或响应对象可能会更改,但方法签名不会更改。

现在,我可以传递经销商id,以及谁在请求信息,并确保允许请求的用户查看该经销商的库存。只是通过经销商或id不允许的东西。

代码语言:javascript
复制
public class CarsRequest
{
  public int DealershipId { get; set; }
  public int RequesterId { get; set; }
}

public class CarsResponse
{
  public Car[] Cars { get; set; }
}

CarsResponse GetCarsRelatedToDealership(CarsRequest request);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5570772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档