gpt4 book ai didi

c# - 设置 EventQuery.Uri 重置 EventQuery 状态

转载 作者:行者123 更新时间:2023-11-30 14:36:13 28 4
gpt4 key购买 nike

这个有效:

public override bool GetAppointments(CalendarModel calendar, DateTime startDate, DateTime endDate) {
foreach (var googcal in _settings.Calendars.Where(googcal => googcal.Selected)) {
var eventQuery = new EventQuery {
Uri = new Uri(googcal.ProviderData),
// Passed in startDate/endDate are inclusive
StartTime = startDate.Date,
EndTime = endDate.Date.AddDays(1).AddMilliseconds(-1)
};
var eventFeed = Service.Query(eventQuery);
foreach (EventEntry appt in eventFeed.Entries) {
...
}
}
return true;
}

这不是:

public override bool GetAppointments(CalendarModel calendar, DateTime startDate, DateTime endDate) {
foreach (var googcal in _settings.Calendars.Where(googcal => googcal.Selected)) {
var eventQuery = new EventQuery {
// Passed in startDate/endDate are inclusive
StartTime = startDate.Date,
EndTime = endDate.Date.AddDays(1).AddMilliseconds(-1),
Uri = new Uri(googcal.ProviderData)
};
var eventFeed = Service.Query(eventQuery);
foreach (EventEntry appt in eventFeed.Entries) {
...
}
}
return true;
}

在第一种情况下,Event.Query.StartTimeEndTime 已按预期正确设置。

在第二种情况下,它们未初始化 (1/1/0001 12:00:00 AM)。

唯一的区别是对象初始化器中属性的顺序。

对于 grins,我做了这样的命令:

// Passed in startDate/endDate are inclusive
StartTime = startDate.Date,
Uri = new Uri(googcal.ProviderData),
EndTime = endDate.Date.AddDays(1).AddMilliseconds(-1)

果然 EndTime 是正确的,但是 StartTime 是未初始化的。

这对我来说毫无意义。怎么可能?

最佳答案

对象初始化器只是设置属性。将一个属性设置在另一个属性之前的任何副作用都将是可见的,就好像您是手写的一样:

var tmp = new EventQuery();
tmp.StartTime = startDate.Date;
tmp.EndTime = endDate.Date.AddDays(1).AddMilliseconds(-1);
tmp.Uri = new Uri(googcal.ProviderData);
var eventQuery = tmp;

在这种情况下,我怀疑通过设置 StartTime/EndTime重置一些内部状态被添加到> 通过设置 Uri

编辑:好的,我现在找到了 the relevant code .

EventQuery 派生自 FeedQuery。在 FeedQuery 上设置 Uri 会调用 ParseUri,后者又会设置所有内部属性。

基本上,当您拥有相互关联的属性时,这种事情总会发生。想象一下,您有一个类型的 Size 属性,它反射(reflect)了也可以独立设置的宽度和高度 - 您可以这样写:

var foo = new Foo {
Width = 100,
Size = new Size(200, 50),
Height = 20
};

最终尺寸为 200x20。当您了解 Uri 是表示完整查询 URI 的属性,而不仅仅是词干时,基本上一切都有意义。

关于c# - 设置 EventQuery.Uri 重置 EventQuery 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10827780/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com