C#中的常量DateTime

C#中的常量DateTime

我想把一个固定的日期时间放在一个属性参数中,我如何做一个恒定的日期时间? 它与EntLib验证应用程序块的ValidationAttribute相关,但也适用于其他属性。

当我这样做:

private DateTime _lowerbound = new DateTime(2011, 1, 1);
[DateTimeRangeValidator(_lowerbound)]

我去拿:

An object reference is required for the non-static field, method, or property _lowerbound

并通过这样做

private const DateTime _lowerbound = new DateTime(2011, 1, 1);
[DateTimeRangeValidator(_lowerbound)]

我去拿:

类型“System.DateTime”不能被声明为const

有任何想法吗? 这样做是不可取的:

[DateTimeRangeValidator("01-01-2011")]
采纳答案:

我一直阅读的解决方案是要去一个字符串的路由,或者作为三个单独的参数传入日/月/年,因为C#当前不支持DateTime字面值。

这是一个简单的例子,它将让你传入int类型的三个参数,或一个string进入属性:

public class SomeDateTimeAttribute : Attribute
{
    private DateTime _date;

    public SomeDateTimeAttribute(int year, int month, int day)
    {
        _date = new DateTime(year, month, day);
    }

    public SomeDateTimeAttribute(string date)
    {
        _date = DateTime.Parse(date);
    }

    public DateTime Date
    {
        get { return _date; }
    }

    public bool IsAfterToday()
    {
        return this.Date > DateTime.Today;
    }
}

参考更多解答:C#中的常量DateTime,转载请保留C#中的常量DateTime

更多:attributes