(请不要问为什么我这样做 - 我与一些遗留代码接口)
我有一个IList<Animal>
,我想将它转换为动物子类型的数组(例如Leopard),但子类型在编译时是未知的 - 它已通过作为参数。
[编辑:保证列表只包含豹子]
我找到了一种有效的方法:
var myArray = (object[])new ArrayList(animals.ToList()).ToArray(animalType)
Leopard[]
。
有更好的解决方案吗?
答案 0 :(得分:0)
试试这个:
Animal[] animalArray = new Animal[animals.Count];
animals.CopyTo(animalArray, 0);
答案 1 :(得分:0)
这是你的意思吗?
public class Animal
{
public string Name { get; set; }
}
public class Leopard : Animal
{
}
class Program
{
static void Main(string[] args)
{
var animals = new List<Animal>
{
new Leopard { Name = "Bob" },
new Leopard { Name = "Jeff" },
new Leopard { Name = "Bill" },
new Leopard { Name = "Dave" }
};
Leopard[] leopardArray = new Leopard[animals.Count];
animals.CopyTo(leopardArray, 0);
Console.Write(leopardArray.Count());
}
}