给Enum静态属性

时间:2014-08-25 23:07:09

标签: c# properties static enums

我最初使用枚举编写了我的解决方案:

enum Speicies {
     monosiga,
     leidyi,
     queelslandica,
     hydra
};

但后来我想为每个枚举选项添加常量属性。即。

Speicies myOrganism = monosiga;
Console.writeLine(myOrganism.database);
Console.writeLine(myOrganism.class);
//Output: 
// c:\monosigadb.fasta
// Choanoflagellatea

这意味着我应该使用一个静态类,我可以使用文字作为数据库和每个物种的类变量。

但是,我希望保留具有Species对象的能力。

这种类型的"推进枚举"

的方法是什么?

1 个答案:

答案 0 :(得分:1)

这就是我的目标:

class Program
{
    static void Main(string[] args)
    {
        List<ISpecies> species = new List<ISpecies>();
        species.Add(new Cat());
        species.Add(new Dog());

        foreach (var specie in species)
        {
            Console.WriteLine(specie.ClassProp);
            Console.WriteLine(specie.DatabaseProp);
        }

        Console.Read();
    }

    public interface ISpecies
    {
        string ClassProp { get; }
        string DatabaseProp { get; }
    }

    public class Cat : ISpecies
    {
        public string ClassProp { get { return "Cat Class Property"; } }
        public string DatabaseProp { get { return "Cat Database Propery"; } }
    }

    public class Dog : ISpecies
    {
        public string ClassProp { get { return "Dog Class Property"; } }
        public string DatabaseProp { get { return "Dog Database Propery"; } }
    }
}