gma*_*che 3 c# asp.net-mvc winforms
如何将动态转换为NameValueCollection?
我尝试将其转换为字典,然后转换为NameValueCollection,但它将为不同类型抛出异常.
[...]
NameValueCollection item = ((IDictionary<string, object>)dynamicObject).ToNameValueCollection();
[...]
public static NameValueCollection ToNameValueCollection<TKey, TValue>(this IDictionary<TKey, TValue> dictionary)
{
var nameValueCollection = new NameValueCollection();
foreach (var pair in dictionary)
{
string value = pair.Value == null ? null : value = pair.Value.ToString();
nameValueCollection.Add(pair.Key.ToString(), value);
}
return nameValueCollection;
}
Run Code Online (Sandbox Code Playgroud)
我找到了答案:
using System.ComponentModel;
using System.Collections.Generic;
using System.Collections.Specialized;
public static class Extensions
{
public static NameValueCollection ToNameValueCollection<T>(this T dynamicObject)
{
var nameValueCollection = new NameValueCollection();
foreach (PropertyDescriptor propertyDescriptor in TypeDescriptor.GetProperties(dynamicObject))
{
string value = propertyDescriptor.GetValue(dynamicObject).ToString();
nameValueCollection.Add(propertyDescriptor.Name, value);
}
return nameValueCollection;
}
}
Run Code Online (Sandbox Code Playgroud)
要使用它:
public void DoStuff(dynamic obj)
{
NameValueCollection items = obj.ToNameValueCollection();
// Do stuff with items
}
Run Code Online (Sandbox Code Playgroud)