问题描述
我有很多这样的课程
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 (将#修改为@)