You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Redemption RDORecurrencePattern按索引获取约会实例异常咨询

Redemption RDORecurrencePattern.GetOccurence 索引调用异常问题排查与解决

问题复现

创建3天的每日重复会议(2023-11-27至29,每晚20:00-20:25),手动修改每个实例的正文用于区分。使用索引循环调用GetOccurence(i)时:

  • 循环逻辑:for (int i = 0; i < pattern.Occurrences; i++)(pattern.Occurrences返回3)
  • 返回结果:i=0 → 11/27实例;i=1 → 重复返回11/27实例;i=2 → 11/28实例;始终无法获取11/29实例
  • 对比:通过日期调用GetOccurence(DateTime)可正常获取三个实例

问题原因

  1. 索引计数逻辑歧义:Redemption中RDORecurrencePattern.GetOccurence的索引参数设计为1-based,但当重复实例被修改为例外项后,索引与Occurrences属性的统计逻辑出现偏移,导致0-based循环无法覆盖所有实例。
  2. 例外实例的特殊处理:当所有重复实例都被手动修改后,Redemption对主实例的重复模式索引映射发生异常,索引调用无法正确定位到最后一个实例。

解决方案

方案1:使用GetOccurrences()批量获取实例

优先使用RDORecurrencePattern.GetOccurrences()方法直接获取所有实例的集合,该方法会自动处理例外实例,无需手动管理索引:

private void Button_Click(object sender, RoutedEventArgs e)
{
    RDOSession session = new RDOSession();
    session.Logon(System.Reflection.Missing.Value, System.Reflection.Missing.Value, false, true, System.Reflection.Missing.Value, false);
    RDOFolder calendar = session.GetDefaultFolder(rdoDefaultFolders.olFolderCalendar);

    foreach (RDOAppointmentItem item in calendar.Items)
    {
        if (item.Subject != null && item.Subject.Contains("Redemption Test") && item.IsRecurring) // 仅处理主实例
        {
            Redemption.RDORecurrencePattern pattern = item.GetRecurrencePattern();
            foreach (var occurrenceObj in pattern.GetOccurrences())
            {
                RDOAppointmentItem apt = (RDOAppointmentItem)occurrenceObj;
                Debug.WriteLine(apt.Body);
                Debug.WriteLine(apt.Start);
            }
        }
    }
}

注意:添加item.IsRecurring判断,避免处理修改后的例外实例(例外实例无有效重复模式)。

方案2:调整索引为1-based循环

若坚持使用索引调用,将索引改为1-based,循环范围调整为1 <= i <= pattern.Occurrences:

for (int i = 1; i <= pattern.Occurrences; i++)
{
    RDOAppointmentItem apt = (RDOAppointmentItem)pattern.GetOccurence(i);
    Debug.WriteLine(apt.Body);
    Debug.WriteLine(apt.Start);
}

注:此方案在部分例外实例场景下仍可能存在兼容性问题,优先推荐方案1。

方案3:检查并升级Redemption版本

当前使用的6.4.0.6234版本可能存在索引调用的bug,可尝试升级至最新稳定版,确认是否已修复该问题。

内容的提问来源于stack exchange,提问作者K_M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 01:18:20