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

问题描述

我有很多这样的课程

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 (将#修改为@)