如何在不更改set属性的情况下自定义get属性?如何自定义Get属性?
public DateTime lastprocessed { get; set; }
我想返回本地时间戳中的日期时间,因为它存储在UTC中。
如何在不更改set属性的情况下自定义get属性?如何自定义Get属性?
public DateTime lastprocessed { get; set; }
我想返回本地时间戳中的日期时间,因为它存储在UTC中。
,你可以得到的最接近的是,在C#
6后来,你同样可以初始化自动实现的属性字段:如果您想转让之前进行一些逻辑,那么你可以创建一个
public DateTime FirstName { get; set; } = // your value here;
方法做逻辑,然后将结果像这样:
public DateTime FirstName { get; set; } = doLogic();
最后一个选项也只是经典get;
public DateTime lastprocessed
{
get
{
// some logic ...
return // some value;
}
set
{
// some logic ...
}
}
我觉得你最好的选择将是为使用什么@Alisson在评论建议(protected get
用的方法来访问它的值)或private
支持者:
private DateTime _lastprocessed;
public DateTime lastprocessed
{
get
{
return _lastprocessed.ToLocalTime().ToUniversalTime();
}
set
{
_lastprocessed = value;
}
}
当你申请的格式到没有后台字段的get
访问器,并尝试创建set
访问器,最后会出现堆栈溢出错误,因为set
将无休止地自行调用,试图设置该属性的值。
如果将初始化程序添加到自动属性中,这对于设置初始值lastprocessed
可以,但是我认为如果打算重新指定lastprocessed
的值,您最终会遇到麻烦。即使您为初始化程序定义了函数,也无法访问分配给lastprocessed
的值。
在这种情况下,您不能使用自动实现的属性。恢复到正常的语法。 –
就像@Aominè说的那样。但是,你可以做的是使'get'受保护,并创建一个方法(例如'GetLastProcessed()')并返回本地**日期**。这将帮助您避免直接访问属性值,迫使您使用该方法。 – Alisson
除了下面列出的方法之外,您可以添加一个新属性“LastProcessedUTC”并进行“lastprocessed”。在返回值时,您确实要小心了解'DateTime.Kind'的值。 一般来说,当我需要应用处理时,我倾向于避免自动属性。它们不适合所有用例。 – PSGuy