我被这个看起来很简单的代码困住了一个多小时......我的课程很少......和这样的方法:
abstract class ClassBase<SampleInterface> {//Some methods};
public class ClassAction1: ClassBase<MyInterface> {//Some methods};
public class ClassAction2: ClassBase<MyInterface> {//Some methods};
class SomeClass
{
public void AddClassRange(ICollection<ClassBase<MyInterface>> range)
{
foreach (ClassBase<MyInterface> ClassBase in range)
AddClass(ClassBase);
}
public void AddClass(ClassBase<MyInterface> behavior)
{
// Something
}
}
现在,我正在尝试在不同的类中使用这些代码:
var arg1 = new ClassAction1 {//Something};
var arg2 = new ClassAction2 {//Something};
//try1
sampleElement.AddClassRange(new [] { arg1 }); // works fine
//try2
sampleElement.AddClassRange(new [] { arg2 }); // works fine
我想结合try1和try2:
// Something like this (try3)
sampleElement.AddClassRange(new [] { arg1, arg2 }); // Error
Error : No best type found for implicitly typed array
我认为,在 try1 和 try2 运行时根据传递给它的参数决定type
for 关键字。new
但是在 try3 中,参数的类型不同,运行时无法确定关键字的最佳type
选择。new
谢谢。如果需要更多信息,请告诉我。