簡體   English   中英

如何實現DateTime實體屬性以始終設置DateTime.Now

[英]How to implement a DateTime entity property to set always DateTime.Now

我已經閱讀了一些關於自動實現的屬性,但我仍然不太明白。 我有和實體:

 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我的屬性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 set`的get {return _date;} doesn't make much sense to me even though almost every example with auto implemented都返回私有變量, get {return _date;} doesn't make much sense to me even though almost every example with auto implemented 但我認為,如果財產是一個實體,這沒有多大意義。

一些返回當前日期的方法:

 public DateTime Date { get { return DateTime.Now; } }

要么

 public class News
 {
    public News()
    {
       Date = DateTime.Now;
    }
    public DateTime Date { get; private set; }
 }

第一個將始終返回當前日期/時間,即使該實例是在一段時間之前創建的。 第二個將返回實例創建的日期/時間。 兩者都阻止用戶設置Date值。

你可以在你的類中添加一個構造函數,然后在那里初始化你的屬性。

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");

不要觸摸吸氣劑和安裝器! 它們是從模板自動生成的,每隔一段時間就會被覆蓋。 相反, 正如您可能已經注意到生成的實體被部分聲明 ,創建一個分部類並在那里聲明一個構造函數,將構造函數的_date或Date設置為DateTime.Now (正如您所希望的那樣)。

public partial class News
{
  public News()
  {
    this.Date = DateTime.Now;
  }
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM