Disons que nous avons quelque chose comme:Comment faire des méthodes automatiquement couverts dans les blocs catch try
public CustomType DoSomething1() {
CustomType ct = new CustomType();
try {
// do something
}
catch(Exception e) {
ct.Passed = false;
}
return ct;
}
public CustomType DoSomething2() {
CustomType ct = new CustomType();
try {
// do something
}
catch(Exception e) {
ct.Passed = false;
}
return ct;
}
public CustomType DoSomething3() {
CustomType ct = new CustomType();
try {
// do something
}
catch(Exception e) {
ct.Passed = false;
}
return ct;
}
Ces méthodes sont exécutées par un autre programme utilisant la réflexion, et si la propriété CustomType Passed == false, arrêt du programme d'exécuter un autre . C'est dû aux aspects d'architecture.
Est-il possible de créer un attribut ou quelque chose comme ça pour éviter d'utiliser les prises d'essai, de sorte que si exception est levée dans la méthode, il fera Passed propriété comme faux et revenir à ce programme? Par exemple.
[CatchException('Passed', false)]
public CustomType DoSomething1() {
CustomType ct = new CustomType();
// do something
return ct;
}
Et si en train de « faire quelque chose » erreur serait ct.Passed sera égal à « faux »
C# ne supporte pas hors de la boîte. –
Pouvez-vous déplacer la tentative d'attraper à la logique de l'appelant? ou c'est hors de la boîte? – Miguel
C# ne supporte pas les décorateurs hors de la boîte. Vous pouvez créer un attribut mais à la fin, vous devez vérifier l'existence de l'attribut et faire votre propre logique. – Miguel