1

考虑这个例子:

namespace ValueObjects
{
  public class User
  {
    public string UserCode { get; set; }
    public string UserName { get; set; }
  }

  public class Company
  {
    public string CompanyCode { get; set; }
  }
}

现在,我希望 User 类具有 CompanyCode 属性。第一个明显的解决方案是简单地将 CompanyCode 属性放在 User 类上

public class User
{
  public string UserCode { get; set; }
  public string UserName { get; set; }
  public string CompanyCode { get; set; }
}

现在这里的问题是冗余,因为公司类已经有一个属性 CompanyCode,有什么方法可以让用户只使用公司的 CompanyCode 属性而不继承公司类(这里的问题是 C# 不允许类的多重继承)或使用 ICompany 接口(但接口在值对象中很痛苦)。我正在考虑只将 Company 类包含到 User 类中,但我将只使用它的属性 CompanyCode。

像这样的东西..

  public class User
  {
    public string UserCode { get; set; }
    public string UserName { get; set; }
    private Company company;
    public string CompanyCode { get { company.CompanyCode } set {company.CompanyCode }

  }

但是,仅仅添加一个字符串属性 CompanyCode.. 需要你的建议。提前致谢..

4

1 回答 1

2

您的解决方案是有效的。你想要遏制;“具有”关系而不是“是”关系(继承)。另一种选择是

public Company UserCompany;

如果将来添加其他公共属性,这将允许 User 对象访问 Company 对象上的其他公共属性。

于 2010-09-12T13:56:44.287 回答