我遇到以下问题:
Sth<A,?>
,虽然我不知道如何存储这些类型,但为简单起见,我们假设List<object>
。
我可以在某处(List<KeyValuePair<Type,object>>
)存储该类型,并使用typeof()
获取,但是,如何将我的对象转换回所需的类型?
像
foreach(var entry in myList)
{
var obj = (Sth<A, entry.Key>) entry.Value;
myMethod(obj); //This can have overloads for object, Sth<A,int>, Sth<A,string>,
// etc. Generally, I need a correct type of obj here.
}
当然myMethod<T>
是一个通用的库方法,对于带有obj is Sth<A, uint>
的if-else,有太多的重载......
我想我可以基于entry.Key
创建一个新对象,然后填写
这种类型的组合是否可能?
我相信,答案在于myList
的正确创造,但我不知道如何去做。
任何帮助将不胜感激!
圣诞快乐:)答案 0 :(得分:6)
如果您使用的是C#4,则可以使用dynamic
:
foreach (KeyValuePair<A, object> entry in myList)
{
dynamic value = entry.Value;
myMethod(value);
}
现在将根据执行时间类型value
在执行时执行重载决策。