Собственное исключение с IEnumerable <Exception> - PullRequest
1 голос
/ 23 апреля 2019

Я хочу сделать свое собственное исключение, например AggregateException:

var exceptions = ErrorCollectionExtension.GetErrorsAsExceptions(compiler.Errors);
throw new AggregateException("Error", exceptions);

, которое может принимать в качестве параметра List из Exceptions:

public MyException(string message, IEnumerable<Exception> innerExceptions)
        : base(message, innerExceptions)
    {

    }

Но я получаюошибка на innerExceptions в базе.

Как сделать собственное исключение с таким набором, как AggregateException?

1 Ответ

2 голосов
/ 23 апреля 2019

Одним из способов было бы просто расширить класс Exception с помощью набора внутренних исключений, примерно так:

public class MyException : Exception
{
    private readonly ReadOnlyCollection<Exception> _innerExceptions;

    public MyException(string message, IEnumerable<Exception> innerExceptions)
        : base(message, innerExceptions.FirstOrDefault())
    {
        _innerExceptions = innerExceptions.ToList().AsReadOnly();
    }

    public ReadOnlyCollection<Exception> InnerExceptions => _innerExceptions;
}

В качестве альтернативы вы можете просто наследовать от AggregateException и использовать его структуру:

public class MyException : AggregateException
{

    public MyException(string message, IEnumerable<Exception> innerExceptions)
        : base(message, innerExceptions)
    {
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...