Chi*_*tan 60 c# asp.net dictionary
现在我再次解释我对词典的热切期待!从我上一个问题的回答中,这个问题在我脑海中浮现!
现在实际的一点是我可以将类转换为字典吗?
在Dictionary中,我希望我的类属性为KEY,特殊属性的值为VALUE
假设我的班级是
public class Location
{
public string city { get; set; }
public string state { get; set; }
public string country { get; set;
}
Run Code Online (Sandbox Code Playgroud)
现在假设我的数据是
city = Delhi
state = Delhi
country = India
Run Code Online (Sandbox Code Playgroud)
现在你可以轻松理解我的观点!
我想制作字典!那本字典应该是这样的
Dictionary<string,string> dix = new Dictionary<string,string> ();
dix.add("property_name", "property_value");
Run Code Online (Sandbox Code Playgroud)
我可以获得价值!但是我怎样才能得到属性名称(而不是价值)?
我应该编码什么来创建它动态!这应该适用于我想要的每一堂课?
你可以理解这个问题
我怎样才能从特定类中获取属性列表?
Mat*_*zer 146
这是配方:1个反射,1个LINQ到对象!
someObject.GetType()
.GetProperties(BindingFlags.Instance | BindingFlags.Public)
.ToDictionary(prop => prop.Name, prop => prop.GetValue(someObject, null))
Run Code Online (Sandbox Code Playgroud)
自从我发表这个答案后,我检查过很多人发现它很有用.我邀请所有寻找这个简单解决方案的人来检查另一个Q&A,我将其推广到扩展方法:将对象映射到字典,反之亦然.
Bru*_*sta 19
这里有一个没有linq的反射示例:
Location local = new Location();
local.city = "Lisbon";
local.country = "Portugal";
local.state = "None";
PropertyInfo[] infos = local.GetType().GetProperties();
Dictionary<string,string> dix = new Dictionary<string,string> ();
foreach (PropertyInfo info in infos)
{
dix.Add(info.Name, info.GetValue(local, null).ToString());
}
foreach (string key in dix.Keys)
{
Console.WriteLine("nameProperty: {0}; value: {1}", key, dix[key]);
}
Console.Read();
Run Code Online (Sandbox Code Playgroud)
Net*_*oke 10
public static Dictionary<string, object> ToDictionary(object model)
{
var serializedModel = JsonModelSerializer.Serialize(model);
return JsonModelSerializer.Deserialize<Dictionary<string, object>>(serializedModel);
}
Run Code Online (Sandbox Code Playgroud)
我已经使用了上面的代码。尽可能简化,它可以在没有反射的情况下工作,并且模型可以嵌套并且仍然可以工作。(如果您使用 Json.net,请将代码更改为不使用 Newtonsoft)
归档时间: |
|
查看次数: |
53397 次 |
最近记录: |