-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() };
爲什麼你有'date'單獨的屬性和'dateTime'呢?如果它們的意圖是相關的,那麼只需要一個屬性 - 或者如果您真的需要,就有兩個使用公共字段的屬性。我也強烈建議您閱讀並遵循.NET命名約定。 –
有多種方法可以處理您的特定問題,但我同意最明顯的是不要將'dateTime'屬性放在首位;只需將其定義爲'private DateTime dateTime => DateTime.Parse(date);'。這樣可以避免出現其他錯誤,也就是您可以稍後設置'date'或'dateTime'屬性,然後兩者不同步。不幸的是,你的問題太廣泛了,不知道你最想做什麼。 –
您使用的語法是對象初始值設定項。它調用構造函數FIRST,然後在新對象上分配屬性。也許如果你希望在它的內部處理日期,可以給你的構造函數添加參數(儘管我同意dateTime和timeleft的計算屬性以及下面的命名約定) – pinkfloydx33