微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从类中的属性创建列表的问题

如何解决从类中的属性创建列表的问题

我有很多这样的课程

public class Item
{
    public int Id { get; set; }
    public int RoomId { get; set; }
    public bool IsIncluded { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public string ItempurchaseUrl { get; set; }
    public decimal SellingPrice { get; set; }
    public string Size { get; set; }
    public int ConditionType { get; set; }
#nullable enable
    public int? PrimaryImageId { get; set; }
#nullable disable
    public DateTime DateCreated { get; set; }
}

我将把它传递给一个网络服务的 POST 例程,但在我这样做之前,所有的类属性和值都需要更改为 KVP,键是属性名称和重视财产价值

由于我正在为大量属性类执行此过程,因此我想出了以下内容来为我进行转换

List<keyvaluePair<string,string>> CreateFromClass<T>(T className)
{
    var data = new List<keyvaluePair<string,string>>();
    var c = Activator.CreateInstance<T>();
    MemberInfo[] members;
    var type = c.GetType();
    members = type.GetMembers(); // get the public members of the class
    var membersList = members.Where(t=>t.Name.Contains("get")).ToList();
    foreach (var t in membersList)
    {
        var name = t.Name;
        var val = string.Empty;
        var nametype = t.GetType().GetProperties();
        foreach (var nt in nametype)
        {
            val = nt.GetValue(t,null).ToString(); 
            data.Add(new keyvaluePair<string,string>(name,val));
        }
    }
 return data;
}

这里显然有问题,但我不确定是什么。方法返回的代码包含 300+ 个 KVP,但名称和值不正确(所有键都称为“get_Id”并且它们没有值 - 所以有些不对劲,它们返回的值都看起来更或者不一样,除了它们的属性类型为 KVP 类型)。

我很确定我已经接近正确,但我不确定通过反射获取正确名称和值的问题在哪里。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。