尝试在C#属性中实现其他范围

时间:2014-01-26 18:06:59

标签: c#

我正在开发一个生成大量C#类的实用程序。大多数生成的类都很小,但有些类最多可以有50多个公共成员。我希望能够添加额外的范围,以减少混乱,并使它们更加智能化。

例如,假设我使用以下成员生成一个类Foo:
苹果,香蕉,哈密瓜,狗,大象,狐狸,天竺葵,芙蓉,鸢尾花 我输入new Foo().时,我希望能够将属性范围限定为类别,而不是显示所有9个成员的IntelliSense。例如,new Foo().Animals.会列出Dog,Elephant和Fox。

我能想到的唯一方法是为每个类创建一个内部类,并在父类上创建一个返回子类实例的属性。这似乎不是很优雅,我不确定它是否适用于嵌套类。

public class Scope
{
    public FruitProperties Fruit { get; private set; }
    public AnimalProperties Animals { get; private set; }
    public FlowerProperties Flowers { get; private set; }

    public Scope()
    {
        Fruit = new FruitProperties();
        Animals = new AnimalProperties();
        Flowers = new FlowerProperties();
    }

    public class FruitProperties
    {
        public string Apple { get { return "Apple"; } }
        public string Banana { get { return "Banana"; } }
        public string Cantaloupe { get { return "Cantaloupe"; } }
    }
    public class AnimalProperties
    {
        public string Dog { get { return "Dog"; } }
        public string Elephant { get { return "Elephant"; } }
        public string Fox { get { return "Fox"; } }
    }
    public class FlowerProperties
    {
        public string Geranium { get { return "Geranium"; } }
        public string Hibiscus { get { return "Hibiscus"; } }
        public string Iris { get { return "Iris"; } }
    }
}

0 个答案:

没有答案