分部类中的组属性

时间:2014-09-07 02:18:34

标签: c# properties class-library partial-classes

我班上有5个属性非常相似;我想把它们分组。它们所包含的类看起来像这样:

class Car
{
   public string PropA { get; set; }
   public string PropB { get; set; }
   public string PropC { get; set; }

   public Car() { }
}

因此,使用Intellisense,我会看到:

Car car = new Car();
car.PropA
   .PropB
   .PropC

..我将获得3个属性。我想要的是它被包含在它自己的小团体中,所以我必须这样做:

car.Props.PropA ="示例&#34 ;;

我创建了一个隐藏它们的部分类,但我不确定这是否是正确的方法:

class Car
{
   public Props { get; set; }

   public Car() { }
}

partial class Props
{
   public string PropA { get; set; }
   public string PropB { get; set; }
   public string PropC { get; set; }
}

还有更好的方法吗?我问,因为我正在创建一个类库,可用性非常重要。

2 个答案:

答案 0 :(得分:3)

partial关键字用于在多个文件中拆分类的实现。知道这一点,在这种情况下它并没有帮助(或伤害)。

在不了解您的设计的情况下,您的解决方案似乎是合理的。只需摆脱partial关键字,这里不合适。

答案 1 :(得分:1)

同意帕特里克的说法。我对你的公共制定者有一个疑问,这是我对如何处理自己感到好奇的事情。

如果你希望其他人使用东西类(并假设这不仅仅是一个模拟的例子)你确定你希望人们能够毫无疑问能够在你的课程中设置属性而不用通过验证和/或处理属性设置的方法/函数?

这可以这样做:

public class Props
{
   public string PropA { get; private set; }
   public string PropB { get; private set; }
   public string PropC { get; private set; }
}

public Props() { }

public SetProps(string propA, string propB, string propC)
{
    this.PropA = propA;
    this.PropB = propB;
    this.PropC = propC;
}

现在显然做这样的事情将取决于道具周围要求的性质(这是一个非常简单的例子 - 所有道具必须同时设置)。但是对于公共制定者来说,该类的用户不一定知道要求的性质,公共制定者可能会让他们知道如何使用该类。