属性或索引器不能分配给它在 C# 中是只读的



我正在获取属性或索引器'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;
}
}

最新更新