1

如果我有一个具有很多属性的类,并且我想创建一个具有所有这些属性的构造函数,我必须输入很多。C# 4.0 中是否有更聪明的方法来做到这一点?

class MyClass {
  public string A{get;set;}
  public string B{get;set;}
  public string C{get;set;}
  public string D{get;set;}
  public string E{get;set;}
  public string F{get;set;}
  public string G{get;set;}
  //and so on...

  public MyClass(string a, string b, string c /*and so on...*/)
  {
    this.A = a;
    this.B = b;
    this.C = c;
    //...
  }
}

我想强制用户创建一个具有所有属性的对象。

4

3 回答 3

2

如果您安装Resharper,其中一个重构工具允许您“生成构造函数”,然后向导会为您提供一个属性列表,您可以选择要包含的属性。

不,我与 Jetbrains 没有任何关系,我只是使用 R# 并发现它是一个非常宝贵的工具。

于 2012-07-25T09:01:15.277 回答
1

前段时间我问了一个类似的问题:

重构大型构造函数

简而言之,没有太多支持让它看起来更好或更容易创建。解决方案永远不会“解决”问题,它们只会将其转移到另一个地方或避开它。

首先要看的是类是否真的需要这么多状态。班级做的太多了吗?它可以分解成更多、更简单的类吗?这并不总是可能的,有时您只是拥有带有大量构造函数参数的类。

于 2012-07-25T08:55:12.690 回答
0

如果您使用的是 .Net4.0,您可以使用Named parameters.

像这样的东西:

class Person
    {
        public long Age { get; set; }
        public string Name { get; set; }
        public double Salary { get; set; }

        public Person(int age=22,string name="Ram",int salary=9000)
        {
            Age = age;
            Name = name;
            Salary = salary;
        }
    }
于 2012-07-25T08:57:36.467 回答