Chr*_*ken 75 .net c# anonymous-types httpwebrequest
我有以下匿名类型:
new {data1 = "test1", data2 = "sam", data3 = "bob"}
Run Code Online (Sandbox Code Playgroud)
我需要一个方法来接受它,并在数组或字典中输出键值对.
我的目标是在HttpRequest中将其用作后期数据,因此我最终将连接到以下字符串中:
"data1=test1&data2=sam&data3=bob"
Run Code Online (Sandbox Code Playgroud)
kbr*_*ton 114
这需要一点点反思才能完成.
var a = new { data1 = "test1", data2 = "sam", data3 = "bob" };
var type = a.GetType();
var props = type.GetProperties();
var pairs = props.Select(x => x.Name + "=" + x.GetValue(a, null)).ToArray();
var result = string.Join("&", pairs);
Run Code Online (Sandbox Code Playgroud)
GWB*_*GWB 61
如果您使用的是.NET 3.5 SP1或.NET 4,则可以(ab)使用RouteValueDictionary它.它实现IDictionary<string, object>并具有一个构造函数,该object属性接受属性并将其转换为键值对.
然后循环键和值来构建查询字符串将是微不足道的.
小智 25
以下是他们如何在RouteValueDictionary中执行此操作:
private void AddValues(object values)
{
if (values != null)
{
foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(values))
{
object obj2 = descriptor.GetValue(values);
this.Add(descriptor.Name, obj2);
}
}
}
Run Code Online (Sandbox Code Playgroud)
完整资料来源:http: //pastebin.com/c1gQpBMG
有一个将匿名对象转换为字典的内置方法:
HtmlHelper.AnonymousObjectToHtmlAttributes(yourObj)
Run Code Online (Sandbox Code Playgroud)
它也返回RouteValueDictionary。注意它是静态的
| 归档时间: |
|
| 查看次数: |
37567 次 |
| 最近记录: |