Этот вопрос задавался по-разному ранее, но ответы мне не помогают, потому что (1) я не контролирую встроенные классы Exception
и (2) Activator.CreateInstance()
возвращает объект / экземпляр, где мне нужен истинный динамический тип.
Я пытаюсь создать метод расширения, который позволяет мне выбрасывать FaultException
из моей службы WCF, основываясь на исключении, которое я ловлю. Например:
try {
...
}
catch (ArgumentNullException exc) {
throw new FaultException<ArgumentNullException>(exc);
}
прямолинеен. Но если я хочу расширить это в общем виде, я бы использовал класс расширения, например:
try {
...
}
catch (Exception exc) {
exc.ThrowFaultException();
}
Я, конечно, зациклен на реализации метода расширения:
public static void ThrowFaultException(this Exception exc) {
// Gives me the correct type...
Type exceptionType = exc.GetType();
// But how the heck do I use it?
throw new FaultException<???>(exc);
}
Ответы здесь и здесь не помогают. Есть идеи?