私はこのシンプルなコードで1時間以上立ち往生しています...クラスはほとんどありません...そして次のようなメソッドがあります:
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
キーワードに最適なものを決定できません。
ありがとう。さらに情報が必要な場合はお知らせください。