Определить тип целевого объекта missingmethod exception

#c# #asynchronous #exception

#c# #асинхронный #исключение

Вопрос:

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

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

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

Комментарии:

1. У ClassName есть информация? learn.microsoft.com/en-us/dotnet/api /… — примечание: если вы ориентируетесь на netstandard, это не отображается до netstandard2.0

2. В моем случае это ClassName так null . Я использую net framework 4.5

Ответ №1:

Должен ли я сначала проверить наличие конструктора и создать свое собственное исключение перед вызовом 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);
    }
}