【发布时间】:2017-02-03 19:20:37
【问题描述】:
以下代码无法编译:
public class Test
{
public void Run()
{
List<MyClass<dynamic>> listOfMyClasses = new List<MyClass<dynamic>>();
MyClass<dynamic> myClass = new MyClass<int>(); // Error here
listOfMyClasses.Add(myClass);
}
public class MyClass<T>
{
public void DoSomething() { }
public void DoSomethingSpecial<T>(T t) { }
}
}
但是,我认为这在逻辑上是有道理的(如果我弄错了,请告诉我)。大概它很有用,因为我可以在不知道类型参数的情况下调用DoSomething。如何完成将myClass 添加到列表中?
【问题讨论】:
-
如果
MyClass实际上没有使用泛型参数,那么移除泛型参数。 -
这是一个浓缩的例子……显然。
-
我可能是错的,但我相信泛型需要特定的类型,不能是动态的或模棱两可的
-
@Edward
dynamic是一个完全有效的泛型类型参数。 -
@thethuthinnang 如此简洁以至于我们几乎不知道您真正想要做什么。 显然,解决问题的方法通常取决于细节。因此,为自己保留所有信息是以自我为中心的。
标签: c# generics dynamic casting