我正在获取属性或索引器'en。不能将 AdmitLocalTime 分配给---它是只读的。 谁能建议我如何设置这个值?
类
public DateTime? AdmitDTUTC {
get { return admitDTUTC; }
set
{
if (value != null) admitDTUTC = value.Value;
}
}
public string AdmitLocalTime {
get
{
if(!admitDTUTC.Equals(DateTime.MinValue))
return admitDTUTC.ToLocalTime().ToString("dd/MM/yyyy HH:mm");
else
return "";
}
}
while (reader.Read())
{
en.AdmitDTUTC = reader.GetDateTime(reader.GetOrdinal("AdmitDTUTC"));
en.AdmitLocalTime = reader.GetString(reader.GetOrdinal("AdmitLocalTime")); // Getting error
}
AdmitLocalTime 是一个只读属性,只获取 AdmitDTUTC 的本地时间等效值。
因此,您不应该直接尝试设置本地时间。它通过设置 AdmitDTUTC 来控制。
public string AdmitLocalTime {
get
{
if(!admitDTUTC.Equals(DateTime.MinValue))
return admitDTUTC.ToLocalTime().ToString("dd/MM/yyyy HH:mm");
else return "";
}
}
正如你在上面的代码中看到的,AdmitLocalTime
只有一个getter(通过get
(而没有setter(set
(,这使得这个属性是一个只读属性,正如编译器错误所说的那样。
要解决此问题 - 您需要添加set
方法
例:
private DateTime admitDTLocal;
public string AdmitLocalTime {
get
{
if(!admitDTUTC.Equals(DateTime.MinValue))
return admitDTUTC.ToLocalTime().ToString("dd/MM/yyyy HH:mm");
else return "";
}
set
{
admitDTLocal = DateTime.ParseExact(value, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
}
}
或带有字符串字段。
private string admitDTLocal;
public string AdmitLocalTime {
get
{
if(!admitDTUTC.Equals(DateTime.MinValue))
return admitDTUTC.ToLocalTime().ToString("dd/MM/yyyy HH:mm");
else return "";
}
set
{
admitDTLocal = value;
}
}