gpt4 book ai didi

c# - WCF:仅返回 json 上的必要属性

转载 作者:行者123 更新时间:2023-11-30 15:49:31 25 4
gpt4 key购买 nike

由于性能调整,我只想返回必要的属性。有可能/解决方法吗?伪/示例代码理解:

[DataContract]
public interface IMemberOverview
{
[DataMember]
public int Id { get; set; }

[DataMember]
public string Name { get; set; }
}

[DataContract]
public interface IMemberDetail
{
[DataMember]
public int Id { get; set; }

[DataMember]
public string Name { get; set; }

[DataMember]
public string Status { get; set; }

[DataMember]
public string Infos { get; set; }
}

public class Member : IMemberOverview, IMemberDetail
{
public int Id { get; set; }

public string Name { get; set; }

public string Status { get; set; }

public string Infos { get; set; }
}

和服务:

[OperationContract]
[WebInvoke(
Method = "GET",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "ListMembers")]
[KnownType(typeof(Member))]
public List<IMemberOverview> ListMembers()
{
return MemberDAO.Instance().GetAll();
}

[OperationContract]
[WebInvoke(
Method = "GET",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "Member/{idString}")]
[KnownType(typeof(Member))]
public List<IMemberDetail> Member(string idString)
{
var id = int.Parse(idString);
return MemberDAO.Instance().Get(id);
}

最佳答案

如果您想在您的对象模型上公开不同的 View ,那么最简单的方法就是在更精简的 DTO 上公开数据 - 即编写第二个类(通常在不同的命名空间中)并在它们之间转换数据。可以手动(编写一些代码,也许是静态转换运算符来执行此操作),也可以使用 PropertyCopy ( like so ) 等实用程序。

拥有一个单独的 DTO 还允许您扩展核心对象模型而不会悄悄影响客户端性能,并使版本控制更加简单。

关于c# - WCF:仅返回 json 上的必要属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1497153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com