当前位置: 首页>>代码示例>>C#>>正文


C# ITimePeriod.AssertMutable方法代码示例

本文整理汇总了C#中ITimePeriod.AssertMutable方法的典型用法代码示例。如果您正苦于以下问题:C# ITimePeriod.AssertMutable方法的具体用法?C# ITimePeriod.AssertMutable怎么用?C# ITimePeriod.AssertMutable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ITimePeriod的用法示例。


在下文中一共展示了ITimePeriod.AssertMutable方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Add

        /// <summary>
        /// 새로운 <paramref name="item"/>을 Chain의 제일 끝에 붙여 넣습니다. <paramref name="item"/>의 기간이 변경됩니다.
        /// </summary>
        /// <param name="item"></param>
        public override void Add(ITimePeriod item) {
            item.ShouldNotBeNull("item");
            item.AssertMutable();

            ITimePeriod last = Last;

            if(last != null) {
                AssertSpaceAfter(last.End, item.Duration);
                item.Setup(last.End, last.End.Add(item.Duration));
            }

            if(IsDebugEnabled)
                log.Debug("Period를 Chain의 끝에 추가합니다. item=[{0}]", item);

            _periods.Add(item);
        }
开发者ID:debop,项目名称:NFramework,代码行数:20,代码来源:TimePeriodChain.cs

示例2: Insert

        /// <summary>
        /// <see cref="ITimePeriod"/>의 Chain의 <paramref name="index"/>번째에 <paramref name="item"/>을 삽입합니다. 선행 Period와 후행 Period의 기간 값이 조정됩니다.
        /// </summary>
        /// <param name="index">추가할 위치</param>
        /// <param name="item">추가할 기간</param>
        public override void Insert(int index, ITimePeriod item) {
            item.ShouldNotBeNull("item");
            Guard.Assert<ArgumentOutOfRangeException>(index >= 0 && index <= Count, "인덱스 범위가 잘못되었습니다. Count=[{0}], index=[{1}]", Count,
                                                      index);

            item.AssertMutable();

            if(IsDebugEnabled)
                log.Debug("Chain의 인덱스[{0}]에 새로운 요소[{1}]를 삽입합니다...", index, item);

            var itemDuration = item.Duration;
            ITimePeriod previousItem = null;
            ITimePeriod nextItem = null;

            if(Count > 0) {
                if(index > 0) {
                    previousItem = this[index - 1];
                    AssertSpaceAfter(End, itemDuration);
                }
                if(index < Count - 1) {
                    nextItem = this[index];
                    AssertSpaceBefore(Start, itemDuration);
                }
            }

            _periods.Insert(index, item);

            if(previousItem != null) {
                if(IsDebugEnabled)
                    log.Debug("선행 Period에 기초하여 삽입한 Period와 후행 Period들의 시간을 조정합니다...");

                item.Setup(previousItem.End, previousItem.End.Add(itemDuration));

                for(int i = index + 1; i < Count; i++) {
                    var startTime = this[i].Start.Add(itemDuration);
                    this[i].Setup(startTime, startTime.Add(this[i].Duration));
                }
            }

            if(nextItem != null) {
                if(IsDebugEnabled)
                    log.Debug("후행 Period에 기초하여 삽입한 Period와 선행 Period들의 시간을 조정합니다...");

                var nextStart = nextItem.Start.Subtract(itemDuration);
                item.Setup(nextStart, nextStart.Add(itemDuration));

                for(var i = 0; i < index - 1; i++) {
                    nextStart = this[i].Start.Subtract(itemDuration);
                    this[i].Setup(nextStart, nextStart.Add(this[i].Duration));
                }
            }
        }
开发者ID:debop,项目名称:NFramework,代码行数:57,代码来源:TimePeriodChain.cs


注:本文中的ITimePeriod.AssertMutable方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。