首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将动态对象转换为NameValueCollection

将动态对象转换为NameValueCollection
EN

Stack Overflow用户
提问于 2015-01-19 19:15:44
回答 1查看 4.5K关注 0票数 4

如何将动态转换为NameValueCollection?

我尝试将其转换为字典,然后再转换为NameValueCollection,但它将为不同的类型抛出异常。

代码语言:javascript
复制
[...]
  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;
}
EN

回答 1

Stack Overflow用户

发布于 2015-01-19 19:15:44

我已经找到了答案:

代码语言:javascript
复制
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;
  }
}

要使用它:

代码语言:javascript
复制
public void DoStuff(dynamic obj) 
{
  NameValueCollection items = obj.ToNameValueCollection();
  // Do stuff with items
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28023361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档