如何制作一个包含所有派生类信息的静态数组

本文关键字:派生 类信息 数组 静态 包含所 一个 何制作 | 更新日期: 2023-09-27 18:19:39

我有一个名为Species的接口,派生类包含每个物种以及关于该物种的文字信息。见下文:

public interface Species
{
    string database { get; }
    string genus { get; }
    string binomialName { get; }
}
public class Monosiga_brevicollis : Species
{
    public string database { get {return "monosiga";} }
    public string genus { get {return "Choanoflagellatea";} }
    public string binomialName { get {return "Monosiga_brevicollis";} }
}
public class Amphimedon_queenslandica : Species
{
    public string database { get {return "queenslandica";} }
    public string genus { get {return "Porifera";} }
    public string binomialName { get {return "Amphimedon queenslandica";} }
}

这使我能够将一个物种分配给一个对象,然后获得关于该物种的数据库在哪里,或者该物种属于哪个属的信息。

如何对Speices的所有派生类执行操作。例如:

1) 创建一个函数:

public bool isSpecies(string binomial)

这允许我通过检查二项式名称来检查输入的字符串是否是预先编码的物种之一。

和2)创建列表

string[] allSpecies;

它包含数组中的所有二项式名称,因此我可以将该数组用作文本框等的默认选项。

如何制作一个包含所有派生类信息的静态数组

这些似乎应该是ISpecies接口实现的实例,而不是单独的类。类似以下内容:

public class Species : ISpecies
{
    public string database { get; set; }
    public string genus { get; set; }
    public string binomialName { get; set; }
}
var speciesList = new List<ISpecies>()
var monosiga = new Species() {
    database = "monosiga",
    genus = "Choanoflagellatea",
    binomialName = "Monosiga_brevicollis"
}
speciesList.Add(monosiga);

一旦你填写了你的列表,你就可以列举出二项式名称,比如:

var names = speciesList.Select(s => s.binomialName);

你也可以通过以下操作来检查一个物种是否存在于列表中:

bool IsSpecies(string binomialName) {
    _speciesList.Any(s => s.binomialName == binomialName);
}