Pio*_*fer 0 c# generics casting
我有以下问题:
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.
}
Run Code Online (Sandbox Code Playgroud)
当然myMethod<T>是一个通用的库方法,有太多的重载if-else它与obj is Sth<A, uint>...
我想我可以创建一个基于entry.Key然后填充的新对象
这种类型的组合甚至可能吗?
我相信,答案在于正确的创造myList,但我不知道该怎么做.
任何帮助,将不胜感激!
圣诞快乐 :)
如果您使用的是C#4,则可以使用dynamic以下内容:
foreach (KeyValuePair<A, object> entry in myList)
{
dynamic value = entry.Value;
myMethod(value);
}
Run Code Online (Sandbox Code Playgroud)
现在将根据执行时间类型在执行时执行重载决策value.