Comment puis-je créer une exception OperationAbortedException ? Ce code ne fonctionne pas :
var ex = new OperationAbortedException("Cannot update event comment");
ERREUR : Impossible d'accéder au constructeur privé 'OperationAbortedException'.
Comment puis-je créer une exception OperationAbortedException ? Ce code ne fonctionne pas :
var ex = new OperationAbortedException("Cannot update event comment");
ERREUR : Impossible d'accéder au constructeur privé 'OperationAbortedException'.
En System.Data.OperationAbortException
(je suppose que vous parlez de celle-ci, car vous ne l'avez pas complètement qualifiée dans votre question). n'a pas de constructeur public et est sealed
. Cela indique clairement que les concepteurs du cadre de travail ne voulaient pas que vous utilisiez cette exception à vos propres fins. Vraisemblablement, parce que certains rouages internes du framework seraient confus si vous le faisiez.
Vous devez utiliser une exception différente pour vos besoins. D'après le texte du message que vous avez transmis, les exceptions existantes suivantes me viennent à l'esprit :
Lorsque vous sélectionnez une exception existante dans le cadre .NET, veillez à ne pas la sélectionner uniquement sur la base du nom de la classe. Veillez à lire la page MSDN correspondante pour comprendre l'intention (originale) de l'exception. La documentation correspondante commence toujours par les mots "L'exception qui est lancée ...". Si vous trouvez que ce texte correspond à votre intention, réutilisez l'exception du framework (ou dérivez-la pour un contrôle plus fin lors de la capture de l'exception).
Ou créez votre propre type d'exception, si vous le souhaitez.
Si vous parlez de la System.Data.OperationAbortedException
alors non, vous ne pouvez pas construire une instance directement, il n'y a pas de constrtucteur public.
Si vous le voulez vraiment, vous pouvez utiliser la réflexion avec la méthode décrite dans la section cette réponse mais je vous recommande de ne pas le faire. Il s'agirait d'une corruption de la conception du cadre.
Voici le code que vous pourriez utiliser mais, s'il vous plaît, ne le faites pas .
var ctor = typeof(OperationAbortException).GetConstructor(
BindingFlags.NonPublic|BindingFlags.Instance,
null,
new Type[0],
null);
var instance = (OperationAbortException)ctor.Invoke(null);
Vous devrez déterminer quel constructeur privé utiliser, s'il y en a plus d'un, et quelles propriétés doivent être définies à quoi. Il n'y a aucune garantie que ce comportement perdure dans les versions ultérieures du framework.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.