我从你的问题中猜想它们都是IConvertible
,所以我会在下面的代码示例中做一些事情。这个想法是我指定“想要”的顺序,即按照我想要的类型(如果它们可以适合多种类型)的顺序,然后我尝试按该顺序转换它们。
public class GenericPropClass
{
public Type type;
public object value;
public string key;
}
[TestMethod]
public void PropertySet()
{
var dict = new Dictionary<string, string>();
var resultingList = new List<GenericPropClass>();
// Specify the order with most "specific"/"wanted" type first and string last
var order = new Type[] { typeof(DateTime), typeof(int), typeof(double), typeof(string) };
foreach (var key in dict.Keys)
foreach (var t in order)
{
try
{
var res = new GenericPropClass()
{
value = Convert.ChangeType(dict[key], t),
key = key,
type = t,
};
resultingList.Add(res);
break;
}
catch (Exception)
{
// Just continue
}
}
}
抱歉,我的回答几乎只包含代码,今晚我可能有时间改进它以了解我的想法,但我现在必须走了 :)