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

时间:2014-08-27 10:26:59

标签: c# .net

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

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

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

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

现在我需要在此部分类和其他部分类中具有与其他属性相关的类似辅助属性。是否有一些替代方法可以复制粘贴上面的代码?

P.S。在写完这个问题之后,我脑子里开始形成一些想法。它们涉及从DateTime继承并编写一个新属性,该属性除了提供相关DateTime属性的名称之外什么都不做。

1 个答案:

答案 0 :(得分:1)

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

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

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