使用两个不同的公共属性来“获取”具有不同返回类型的相同私有变量

时间:2009-05-13 16:12:52

标签: c# properties

我的Customer类有一个列表<string&gt;角色属性。很多时候我想访问该属性作为一个字符串列表,但有时我想把它看作逗号分隔列表。

我当然可以在一个新方法中做到这一点,如果我预计想要以不同的格式(逗号分隔,制表符分隔和&amp; ct)获取变量的值,我肯定会这样做。但是,我正在考虑使用两个不同的属性来访问变量值,这与

一致。
public List<string> Roles 
{
    get { return this._Roles; }
    set { this._Roles = value; } 
}

public string RolesToString
{
    get { do some work here to comma-delimit the list; }
}

基本上我想覆盖此特定列表的ToString()方法。是否有令人信服的理由做一个超过另一个?是否使用两个不同的属性来返回非标准的相同变量值以引起红色标记?

3 个答案:

答案 0 :(得分:10)

我会让你的第二个“财产”成为一种方法。它在您的列表上执行其他处理,并返回不是对象的直接“属性”的内容,但更多是对象属性的已处理版本。这似乎是一种合理的候选方法。

我的偏好是:

public List<string> Roles 
{
    get { return this._Roles; }
    set { this._Roles = value; } 
}

public string GetRolesAsString()
{
    // Do processing on Roles
}

答案 1 :(得分:3)

正如里德所说,它应该是一种方法,但这有点主观。

请注意,执行此操作不需要太多代码 - 只需调用Join()

即可
public string RolesAsString()
{
    return String.Join(", ", this._Roles);
}

鉴于字符串连接在.NET中很容易,你真的需要一个方法/属性吗?

答案 2 :(得分:0)

我对你的建议没有任何问题。除了我将它命名为 RolesString

但是......为什么只有一个吸气剂?如果我可以设置Roles属性,为什么我不能设置RolesString属性?

额外处理并不一定意味着应该使用一种方法。