#c# #asynchronous #exception
#c# #асинхронный #исключение
Вопрос:
Я загружаю некоторые данные асинхронно. Загруженные данные не относятся к какому-либо определенному типу, но для них требуется конструктор без параметров. Теперь я забыл об этом и
Для этого объекта не определен конструктор без параметров.
исключение было перехвачено. Проблема в том, что я не знаю, что такое «этот объект«?? Ну, в текущей ситуации я знаю, что это за тип, потому что я только что добавил его, но я вижу здесь будущие проблемы. Как я могу определить тип объекта, который вызвал проблему? Должен ли я сначала проверить наличие конструктора и создать свое собственное исключение перед вызовом Activator.CreateInstance()
? Это похоже на двойную проверку одного и того же, и я хотел бы избежать этого.
Комментарии:
1. У
ClassName
есть информация? learn.microsoft.com/en-us/dotnet/api /… — примечание: если вы ориентируетесь на netstandard, это не отображается до netstandard2.02. В моем случае это
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);
}
}