Определить тип целевого объекта MissingMethodException - PullRequest
1 голос
/ 07 марта 2019

Я загружаю некоторые данные асинхронно. Загруженные данные не имеют определенного типа, но для них требуется конструктор без параметров. Теперь я забыл об этом и

Для этого объекта не определен конструктор без параметров.

исключение было поймать. Проблема в том, что я не знаю, что такое " этот объект " ?? Ну, в текущей ситуации я знаю, что это за тип, потому что я только добавил его, но я вижу здесь будущие проблемы. Как я могу определить тип объекта, который вызвал проблему? Должен ли я сначала проверить конструктор и выдать свое собственное исключение перед вызовом Activator.CreateInstance()? Это похоже на двойную проверку одного и того же, и я хотел бы избежать этого.

1 Ответ

1 голос
/ 07 марта 2019

Должен ли я сначала проверить конструктор и выдать свое собственное исключение перед вызовом Activator.CreateInstance()?

Для вызова Activator.CreateInstance требуется тип.Есть ли какая-то конкретная причина, по которой вы не можете использовать подобное решение?

public object Create(Type type)
{
    try
    {
        return Activator.CreateInstance(type);
    }
    catch (MissingMethodException e)
    {
        Console.WriteLine($"Gotcha! Type: {type}");
        // or whatever handling, eg. rethrow with type included:
        throw new MyException(type, e);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...