я застрял с этой простой ищет код более часа теперь ... У меня есть несколько классов ... и такие методы, как это:Передача ICollection как аргумент
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
As Я думаю, что в try1 и try2 runtime решает type
для ключевого слова new
на основе переданного ему параметра. Но в try3 параметры имеют разные типы, а время выполнения не может решить для наилучшего type
для ключевого слова new
.
Спасибо. Дайте мне знать, если вам нужна дополнительная информация.
Проблема заключается в том, что он не может создать коллекцию класса, поскольку arg1 и arg2 разные. Попробуйте наложить их на базовый тип – snurre