我已经阅读了一堆关于自动实现的属性,但我仍然不太明白。我有和实体:
public class News
{
public int NewsId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public DateTime Date { get; set; }
}
现在我不希望用户每次创建News
类型的新实体时都自己设置日期。我希望记录自动保存,并创建日期时间。考虑一下我建议只需将我的财产的set
修改为:
public DateTime Date
{
get;
set
{
Date = DateTime.Now;
}
}
但是阅读有关该主题的内容,我看到标准方法是创建私有变量并在实现中使用它。这就是我有点迷失的地方。
private DateTime _date = null;
public DateTime Date
{
嗯,我不确定getter和setter实现。有一些类似于set { _date = DateTime.Now;}
似乎是合理的,我不知道如何处理get
部分,因为我希望从数据库中提取这些数据,所以像:get {return _date;} doesn't make much sense to me even though almost every example with auto implemented
这样设置`返回私有变量。但我认为,如果财产是一个实体,这没有多大意义。
答案 0 :(得分:5)
返回当前日期的一些方法:
public DateTime Date { get { return DateTime.Now; } }
或
public class News
{
public News()
{
Date = DateTime.Now;
}
public DateTime Date { get; private set; }
}
第一个将始终返回当前日期/时间,即使该实例是在一段时间之前创建的。第二个将返回实例创建的日期/时间。两者都阻止用户设置日期值。
答案 1 :(得分:3)
你可以在你的类中添加一个构造函数,然后在那里初始化你的属性。
public class News
{
// properties goes here
public News()
{
Date=DateTime.Now;
}
}
更好的构造函数将是以下
public News(int newsId, string title, string content)
{
NewsId=newsId;
Title=title;
Content=content;
Date=DateTime.Now;
}
这样你就可以在一行代码中创建一个News类型的对象。
News news = new News(1,"title1","whatever");
答案 2 :(得分:1)
请勿触摸吸气器和安装器!它们是从模板自动生成的,每隔一段时间就会被覆盖。相反,正如您可能已经注意到生成的实体被部分声明,创建一个局部类并在那里声明一个构造函数,将构造函数的_date或Date设置为DateTime.Now
构造(只是如你所愿)。
public partial class News
{
public News()
{
this.Date = DateTime.Now;
}
}