如何对象转换成字典&LT; TKEY的,TValue&GT;在C#中? [英] How to convert object to Dictionary<TKey, TValue> in C#?
本文介绍了如何对象转换成字典&LT; TKEY的,TValue&GT;在C#中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我如何动态对象转换为词典&LT; TKEY的,TValue&GT;
在C#中我能做些什么
公共静态无效的MyMethod(obj对象)
{
如果(typeof运算(IDictionary的).IsAssignableFrom(obj.GetType()))
{
//我的目标是一本字典,铸造对象:
//(字典&LT;字符串,字符串&GT;)目标文件;
//导致错误...
}
其他
{
//我的对象不是一本字典
}
}
解决方案
公共静态KeyValuePair&LT;对象,对象&gt;演员LT; K,V&GT;(这KeyValuePair&LT; K,V&GT; KVP)
{
返回新KeyValuePair&LT;对象,对象&gt;(kvp.Key,kvp.Value);
}
公共静态KeyValuePair&LT; T,V&GT; CastFrom&LT; T,V&GT;(obj对象)
{
返程(KeyValuePair&LT; T,V&GT;)目标文件;
}
公共静态KeyValuePair&LT;对象,对象&gt; CastFrom(obj对象)
{
VAR类型= obj.GetType();
如果(type.IsGenericType)
{
如果(类型== typeof运算(KeyValuePair&LT;,&GT;))
{
VAR键= type.GetProperty(钥匙);
VAR值= type.GetProperty(价值);
VAR keyObj = key.GetValue(OBJ,NULL);
VAR valueObj = value.GetValue(OBJ,NULL);
返回新KeyValuePair&LT;对象,对象&gt;(keyObj,valueObj);
}
}
抛出新的ArgumentException(### - &GT;公共静态KeyValuePair&LT;对象,对象&gt; CastFrom(obj对象):错误:obj参数必须是KeyValuePair&LT;,&gt;中);
}
从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屋!
查看全文