为了向后兼容,我需要写什么样的setter ?

本文关键字:什么样 setter | 更新日期: 2023-09-27 18:01:34

我是OOP的新手。请帮帮我。我标记了一些属性,如"obsolete",并创建了2个集合。为了向后兼容,我需要在这些(过时的)属性中编写什么样的setter(我在测试和旧版本的产品中使用此属性)?

[Obsolete("This is for backward compatibility with existing database records. Use Ids instead")]
[DataMember(Name = "Id")]
public Guid Id
{
    get { return Ids.FirstOrDefault(); }
}
[Obsolete("This is for backward compatibility with existing database records. Use Names instead")]
[DataMember(Name = "name")]
public string Name
{
    get { return Names.FirstOrDefault(); }
}
DataMember(Name = "Ids")]
public GuidCollection Ids { get; set; }
DataMember(Name = "names")]
public StringCollection Names { get; set; }

为了向后兼容,我需要写什么样的setter ?

这个怎么样,

[Obsolete("This is for backward compatibility with existing database records. Use Names instead")]
[DataMember(Name = "name")]
public string Name
{
    get
    {
        return Names.FirstOrDefault();
    }
    set
    {
        Names = new StringCollection();
        Names.Add(value);
    }
}

你不应该写setter。如果您将属性标记为过时的,那么这意味着您建议以后不再使用它们,但更重要的是,省略setter不会破坏任何已经使用属性的,因为任何遗留代码都没有开始使用setter。