c#是否提供了对属性名称进行别名的直接方法?

时间:2017-12-09 16:59:34

标签: c# properties alias

c#(任何版本)是否提供了一种改进的别名属性名称方法?在AccountBase中,我使用字符串Username来标识帐户,但在NonstandardAccount中,我希望客户端(API的使用者)使用CustomerNumber来防止混淆。

这是我的代码:

public abstract class AccountBase
{
    public string Username { get => Username; set => Username = value; }
}

public class StandardAccount
{
    // The username is the ID
}


public class NonstandardAccount : AccountBase
{
    // The Username or CustomerNumber is the ID
    public string CustomerNumber { get => Username; set => Username = value; }

    // OR ideally, but I don't think this works
    public string CustomerNumber => Username; 
}

我可以放弃添加CustomerNumber属性,只记录它与用户名相同,但它不清楚。我可以按原样保留我的实现,但为了清晰起见,额外的存储可能不是一个很好的权衡。

1 个答案:

答案 0 :(得分:3)

感谢Patrick Artner,我不仅找到了答案,而且找到了理想的答案。它一直都在我的源代码中,但我并不相信我的直觉。

public class NonstandardAccount : AccountBase
{
    // Does work and works perfectly! Username is still accessible
    public string CustomerNumber => Username; 
}

一个新的难以吸取的教训:仅仅因为你的直觉在很多场合都是错误的,并不意味着你应该把它视为病态的骗子。