2017-08-06 36 views
-1

dateTime = DateTime.Parse(date);中的日期對象或其他任何東西在構造函數中都是不可用的,因爲它沒有被設置。唯一的辦法是在構造函數中設置所有這些嗎?屬性在構造函數中不可用

public class BorrowedItemModel 
    { 
    public String _id { get; set; } 
    public String issuer { get; set; } 
    public String issued { get; set; } 
    public String issuedname { get; set; } 
    public String obj { get; set; } 
    public String date { get; set; } 
    private DateTime dateTime { get; set; } 
    private TimeSpan timeleft { get; set; } 
    public string TimeLeftString { get; set; } 
    private Timer timer; 

    public BorrowedItemModel() 
    { 
     timer = new Timer(1000*60); 
     timer.Elapsed += Timer_Elapsed; 
     timer.Enabled = true; 
     dateTime = DateTime.Parse(date); 
     timeleft = dateTime - DateTime.UtcNow; 
    } 

    private void Timer_Elapsed(object sender, ElapsedEventArgs e) 
    { 
     timeleft = timeleft.Subtract(TimeSpan.FromMinutes(1)); 
     TimeLeftString = timeleft.ToString(); 
    } 
} 
// where this is called in another class // 

model = new BorrowedItemModel { _id = value["_id"].ToString(), date = value["date"].ToString(), issuer = value["issuer"].ToString(), issued = value["issued"].ToString(), issuedname = value["issuedname"].ToString(), obj = value["obj"].ToString() }; 
+3

爲什麼你有'date'單獨的屬性和'dateTime'呢?如果它們的意圖是相關的,那麼只需要一個屬性 - 或者如果您真的需要,就有兩個使用公共字段的屬性。我也強烈建議您閱讀並遵循.NET命名約定。 –

+0

有多種方法可以處理您的特定問題,但我同意最明顯的是不要將'dateTime'屬性放在首位;只需將其定義爲'private DateTime dateTime => DateTime.Parse(date);'。這樣可以避免出現其他錯誤,也就是您可以稍後設置'date'或'dateTime'屬性,然後兩者不同步。不幸的是,你的問題太廣泛了,不知道你最想做什麼。 –

+0

您使用的語法是對象初始值設定項。它調用構造函數FIRST,然後在新對象上分配屬性。也許如果你希望在它的內部處理日期,可以給你的構造函數添加參數(儘管我同意dateTime和timeleft的計算屬性以及下面的命名約定) – pinkfloydx33

回答

1

你可以定義你棗業的更新日期時間屬性

public class BorrowedItemModel 
    { 
    public String _id { get; set; } 
    public String issuer { get; set; } 
    public String issued { get; set; } 
    public String issuedname { get; set; } 
    public String obj { get; set; } 
    private String _date; 
    public String date 
    { get {return _date;} 
     set 
     { 
     _date=value; 
     dateTime = DateTime.Parse(value); 
     timeleft = dateTime - DateTime.UtcNow; 
     } 
    } 
    private DateTime dateTime { get; set; } 
    private TimeSpan timeleft { get; set; } 
    public string TimeLeftString { get; set; } 
    private Timer timer; 

    public BorrowedItemModel() 
    { 
     timer = new Timer(1000*60); 
     timer.Elapsed += Timer_Elapsed; 
     timer.Enabled = true; 
     //dateTime = DateTime.Parse(date); 
     //timeleft = dateTime - DateTime.UtcNow; 
    } 

} 
相關問題