如何对象转换成字典< TKEY的,TValue>在C#中? [英] How to convert object to Dictionary<TKey, TValue> in C#?

查看:238
本文介绍了如何对象转换成字典< TKEY的,TValue>在C#中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何动态对象转换为词典< TKEY的,TValue> 在C#中我能做些什么

 公共静态无效的MyMethod(obj对象)
{
    如果(typeof运算(IDictionary的).IsAssignableFrom(obj.GetType()))
    {
        //我的目标是一本字典,铸造对象:
        //(字典<字符串,字符串>)目标文件;
        //导致错误...
    }
    其他
    {
        //我的对象不是一本字典
    }
}
 

解决方案

 公共静态KeyValuePair<对象,对象>演员LT; K,V>(这KeyValuePair< K,V> KVP)
    {
        返回新KeyValuePair<对象,对象>(kvp.Key,kvp.Value);
    }

    公共静态KeyValuePair< T,V> CastFrom< T,V>(obj对象)
    {
        返程(KeyValuePair< T,V>)目标文件;
    }

    公共静态KeyValuePair<对象,对象> CastFrom(obj对象)
    {
        VAR类型= obj.GetType();
        如果(type.IsGenericType)
        {
            如果(类型== typeof运算(KeyValuePair<,>))
            {
                VAR键= type.GetProperty(钥匙);
                VAR值= type.GetProperty(价值);
                VAR keyObj = key.GetValue(OBJ,NULL);
                VAR valueObj = value.GetValue(OBJ,NULL);
                返回新KeyValuePair<对象,对象>(keyObj,valueObj);
            }
        }
        抛出新的ArgumentException(###  - >公共静态KeyValuePair<对象,对象> CastFrom(obj对象):错误:obj参数必须是KeyValuePair<,>中);
    }
 

从OP:

  取而代之的将我的整个字典的

,我决定把我的OBJ   动态的全部时间。当我访问的键和值我   词典在foreach后,我用的foreach(动态密钥   obj.Keys)和转换键和值转换为字符串简单。

How do I convert a dynamic object to a Dictionary<TKey, TValue> in C# What can I do?

public static void MyMethod(object obj)
{
    if (typeof(IDictionary).IsAssignableFrom(obj.GetType()))
    {
        // My object is a dictionary, casting the object:
        // (Dictionary<string, string>) obj;
        // causes error ...
    }
    else
    {
        // My object is not a dictionary
    }
}

解决方案

    public static KeyValuePair<object, object > Cast<K, V>(this KeyValuePair<K, V> kvp)
    {
        return new KeyValuePair<object, object>(kvp.Key, kvp.Value);
    }

    public static KeyValuePair<T, V> CastFrom<T, V>(Object obj)
    {
        return (KeyValuePair<T, V>) obj;
    }

    public static KeyValuePair<object , object > CastFrom(Object obj)
    {
        var type = obj.GetType();
        if (type.IsGenericType)
        {
            if (type == typeof (KeyValuePair<,>))
            {
                var key = type.GetProperty("Key");
                var value = type.GetProperty("Value");
                var keyObj = key.GetValue(obj, null);
                var valueObj = value.GetValue(obj, null);
                return new KeyValuePair<object, object>(keyObj, valueObj);
            }
        }
        throw new ArgumentException(" ### -> public static KeyValuePair<object , object > CastFrom(Object obj) : Error : obj argument must be KeyValuePair<,>");
    }

From the OP:

Instead of converting my whole Dictionary, i decided to keep my obj dynamic the whole time. When i access the keys and values of my Dictionary with a foreach later, i use foreach(dynamic key in obj.Keys) and convert the keys and values to strings simply.

这篇关于如何对象转换成字典&LT; TKEY的,TValue&GT;在C#中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆