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

C# 属性模板(具有相同\类似代码的多个类中的多个属性)?,c#,.net,C#,.net,在c#项目(确切地说是MVC项目)中,我有一些分部类。其中一些类具有DateTime属性,我需要稍微扩展它们的功能。我正在做的事情是向类添加一个helper属性,让我分别更改时间 因此,如果在生成的分部类中有一个SomeDate属性,我会将其添加到类的未生成部分: DateTime? _someDateTime; [DataType(DataType.Time)] public DateTime? SomeDateTime { get { if (_someDat

在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实例

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

如果您有一个分部类,则该属性已经“共享”,它是同一个类。你想让属性(及其变化逻辑)在另一个类中吗?@derape我需要与其他类甚至属性共享
SomeDateTime
的逻辑。例如,在一个类中,我可能有
DateTime
属性,如
Start
End
,并且每个类都需要这样的helper属性。这是否使我的问题更清楚了?基本思想是,我需要一个单独的属性作为
DateTime
属性的时间部分。操纵时间本身并不是一个目标,但使用单独的属性来实现这一目标才是。因此,基本上您希望“原始”DateTime属性以“不同”的格式/状态表示?