属性模板(多个类中具有相同相似代码的多个属性)

本文关键字:属性 相似 代码 | 更新日期: 2023-09-27 18:19:48

在c#项目(确切地说是MVC项目)中,我有一些分部类。其中一些类具有DateTime属性,我需要稍微扩展一下它们的功能。我正在做的事情是向类添加一个helper属性,让我单独更改时间。

因此,如果我在生成的分部类中有一个SomeDate属性,我会将其添加到类的未生成部分:

DateTime? _someDateTime;
[DataType(DataType.Time)]
public DateTime? SomeDateTime
{
    get
    {
        if (_someDateTime == null)
        {
            if (SomeDate.HasValue)
            {
                _someDateTime = SomeDate;
            }
        }
        return _someDateTime;
    }
    set
    {
        _someDateTime = value;
    }
}

在其他地方使用一些额外的代码,我可以很容易地以我想要的方式操作SomeDate属性的时间。

现在,我需要具有与这个类和其他分部类中的其他属性相关的类似助手属性。除了复制粘贴上面的代码,还有其他选择吗?

附言:写完这个问题后,我的脑海里开始形成一些想法。它们涉及从DateTime继承并编写一个新属性,该属性只提供相关DateTime属性的名称。

属性模板(多个类中具有相同相似代码的多个属性)

有多种方法可以做到这一点:

  • 正如您已经说过的:创建一个包装器类,它提供您所需的操作对象状态的功能
  • 与第一个类似,创建一个扩展方法,然后操作DateTime实例
  • 创建一个"Helper"类,该类能够更改DateTime实例

它实际上取决于代码的上下文以及需求、约束等。