Как получить недвижимость с помощью отражения? - PullRequest
0 голосов
/ 06 мая 2020

Мне нужно удалить любую ссылку на System.Data.SqlClient из моего проекта. Единственный случай, который я использую, - это получить список ошибок, например:

if (ex is SqlException)
{
    var spx = ex as SqlException;
    if (spx.Errors != null)
    {
        for (int i = 0; i < spx.Errors.Count; i++)
        { 
            var sqlError = spx.Errors[i];
        }
    }
}

Это единственная альтернатива для использования Reflection и вызова GetProperty, как в:

if (ex.GetType().Name == "SqlException")
{
    var errors = ex.GetType().GetProperty("Errors");
    if (errors != null)
    {}
}

1 Ответ

0 голосов
/ 06 мая 2020

Это определенно вопрос обработки исключений. Во-первых, есть один список классификаций и один набор хороших рекомендаций . Эти двое помогли мне, и я считаю их «обязательным к прочтению» по теме c.

Многие вещи, которые вы там делаете, выглядят довольно критично. Вы ловите слишком широкий. Затем выполните фильтрацию по типу, используя is. Но вы никогда не выбрасываете неправильные исключения.

Кажется, ваше основное беспокойство вызывает код, вызывающий ваш код, имеющий дело с SqlException, поскольку добавление ссылки по какой-то причине неприменимо. Обычно решение состоит в том, чтобы создать свой собственный класс исключения и поместить класс Sql во внутреннее исключение. В приведенных выше рекомендациях есть все подробности, которые я мог бы вам дать по этому поводу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...