我的web方法返回具有很多属性的对象'User':Id,Nick,Email,FirstName,SecondName等...
[WebMethod]
public User GetUserById(int userId)
{
vfm_elita.elita_table.user.User user =
vfm_elita.elita_table.user.User.GetUserById(userId);
return user;
}
是否有可能限制退回的物业数量?或者我应该创建一个只有必需属性的单独类(UserForClientForParticular)?
感谢。
P.S。猜猜,我的最后一个想法将是建议的答案:),但无论如何,欢迎任何想法
答案 0 :(得分:1)
您应该始终非常了解您在API中公开的数据,特别是如果它们有可能被外部方使用,但即使它们仅在内部使用。我肯定会建议您在帖子中提到的内容,并创建一个旨在仅公开此上下文中必需的数据的构造。
更新:还建议您查看codeplex上的AutoMapper项目,该项目处理自动将属性值从一个对象(User)映射到另一个对象(UserSummary)。
答案 1 :(得分:1)
使用数据传输对象是个好主意,专门用于公开客户端应该知道的属性。或者,如果您是原型,匆忙,或者由于其他原因不想创建DTO类,您可以使用匿名类型来减少响应:
[WebMethod]
public object GetUserById(int userId)
{
vfm_elita.elita_table.user.User user =
vfm_elita.elita_table.user.User.GetUserById(userId);
// Will return something like {"Nick":"Encosia","FirstName":"Dave"}
return new { Nick = user.Nick, FirstName = user.FirstName };
}