如何在不更改set属性的情况下自定义get属性?
public DateTime lastprocessed { get; set; }
我希望以本地时间戳返回日期时间,因为它存储在UTC中。
答案 0 :(得分:2)
您可以获得的最接近的是C#
6及更高版本,您可以与字段类似地初始化自动实现的属性:
public DateTime FirstName { get; set; } = // your value here;
如果您希望在分配之前执行某些逻辑,那么您可以创建一个方法来执行逻辑并分配结果,如下所示:
public DateTime FirstName { get; set; } = doLogic();
最后一个选项只是经典的get;
set;
public DateTime lastprocessed
{
get
{
// some logic ...
return // some value;
}
set
{
// some logic ...
}
}
答案 1 :(得分:0)
我认为您最好的选择是使用@Alisson在评论中建议的protected get
以及访问其值的方法)或private
支持者:
private DateTime _lastprocessed;
public DateTime lastprocessed
{
get
{
return _lastprocessed.ToLocalTime().ToUniversalTime();
}
set
{
_lastprocessed = value;
}
}
在没有支持字段的情况下将格式应用于get
访问者并尝试创建set
访问者时,最终会出现 Stack Overflow 错误,因为{{ 1}}将无休止地调用自己,试图设置属性的值。
如果你为auto属性添加一个初始值设定项,这对于设置set
的初始值很好,但我认为你最终会遇到麻烦,假设你打算重新分配{{{ 1}}。即使您为初始化程序定义了一项功能,也无法访问分配给lastprocessed
的值。