J'essaye d'écrire une méthode d'aide qui enregistrerait un message et lancerait une exception d'un type spécifié avec le même message. Je donne les résultats suivants:Comment créer une instance d'un argument de type générique à l'aide d'un constructeur paramétré en C#
private void LogAndThrow<TException>(string message, params object[] args) where TException : Exception, new()
{
message = string.Format(message, args);
Logger.Error(message);
throw new TException(message);
}
Avant d'ajouter la contrainte new()
le compilateur se plaint que sans elle, je ne peux pas instancier TException
. Maintenant, le message d'erreur que je reçois est "Impossible de fournir des arguments lors de la création d'une instance d'un paramètre de type 'TException'". J'ai essayé de créer l'instance avec le constructeur sans paramètre, puis j'ai défini la propriété Message
mais elle est en lecture seule.
Est-ce une limitation du langage ou existe-t-il une solution que je ne connais pas? Peut-être que je pourrais utiliser la réflexion, mais c'est trop pour une tâche aussi simple. (Et assez moche, mais c'est une question d'opinion personnelle.)
double possible de [Créer une instance de type générique ?] (http://stackoverflow.com/questions/731452/create-instance-of-generic-type) – nawfal