Как исправить ошибку загрузки отчета в отчете Crystal

Это своего рода «расширенный комментарий» в связи с ответом Марка, пытаясь опираться на его решение Law Postel's Law. Параметр, меняющийся в конструкторе, чувствовал себя неловко для меня, поэтому я сделал переопределение даты в явном виде в классе Period.

С помощью синтаксиса C # 6 для краткости:

public class Period
{
    public DateTime Start { get; }
    public DateTime End { get; }

    public Period(DateTime start, DateTime end)
    {
        if (start > end) throw new ArgumentException("start should be before end");
        Start = start;
        End = end;
    }

    public static Period CreateSpanningDates(DateTime x, DateTime y, params DateTime[] others)
    {
        var all = others.Concat(new[] { x, y });
        var start = all.Min();
        var end = all.Max();
        return new Duration(start, end);
    }
}

public class SomeClass
{
    public DateTime ValidFrom { get; }
    public DateTime ExpirationDate { get; }

    public SomeClass(Period period)
    {
        ValidFrom = period.Start;
        ExpirationDate = period.End;
    }
}

Затем вам нужно будет настроить ваш прибор для Period для использования статического конструктора:

fixture.Customize(f =>
    f.FromFactory((x, y) => Period.CreateSpanningDates(x, y)));

Я думаю, что основное преимущество этого решения заключается в том, что он извлекает время (SRP) и оставляет вашу бизнес-логику выраженной в терминах уже согласованного контракта, очевидного из подписи конструктора.

0
задан Iostream Doteych 16 January 2019 в 10:59
поделиться

1 ответ

Похоже, что это либо проблемы с путем отчета, попробуйте предложение здесь: код проекта

Или, если это не проблема, есть ли более чем одна версия CR установлена ​​в машине ? потому что это вызывает проблемы, подобные этой. Попробуйте удалить и установить правильную версию снова.

0
ответ дан TheOne__ 16 January 2019 в 10:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: