我试图完成这样的事情。隐式转换泛型类
public class GreatClass<A, B>
where A : IA
where B : IB, new()
{
public void Function()
{
var list = new List<A>();
var obj = new B { Items = list.ToArray() };
}
}
public interface IA
{
}
public interface IB
{
IA[] Items { get; set; }
}
namespace Namespace1
{
public class A : IA {}
public class B : IB {}
}
namespace Namespace2
{
public class A : IA {}
public class B : IB {}
}
所以我有两个具有类似类的名称空间实现相同的接口。我有两个我想在两个名称空间的类之间共享的逻辑,因此我使用实现已实现接口的泛型类。
但是,我在“list.ToArray()”上得到一个编译错误,指出它不能隐式输入'IA []'到'IA []'。有什么我可以做的,这使得编译器明白如何处理这个问题?
使用.Cast()像你一些人一直建议给我一个运行时错误,而不是。我无法将IA []类型转换为Namespace1.A [](或Namespace2.A [])。
你可以用'.Cast()'虽然因为数组是空的,你可以只创建一个空的'IA []'直接。 –
Lee