由网友(没事别找我,有事更别找我)分享简介:我如何动态对象转换为词典< TKEY的,TValue> 在C#中我能做些什么公共静态无效的MyMethod(obj对象){如果(typeof运算(IDictionary的).IsAssignableFrom(obj.GetType())){//我的目标是一本字典,铸造对象://(字典<字符串,字符串...![Java对象类型的转换](https://p.xsw88.cn/allimgs/daicuo/20230903/5298.png)
我如何动态对象转换为词典< 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)和转换键和值转换为字符串简单。
![Java对象类型的转换](https://p.xsw88.cn/allimgs/daicuo/20230903/5298.png)
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.
相关推荐
最新文章