Je souhaite appeler une méthode partielle depuis l'extérieur de la classe déclarante. Ceci n'est pas autorisé car les méthodes partielles sont implicitement privées. Vous ne pouvez pas définir un délégué à indiquer que je suis un si partiel proposais ce qui suit:C#: Méthodes partielles et Action, corps non implémenté
public partial class MyClass {
AnotherClass _anotherClass;
public MyClass () {
_anotherClass = new AnotherClass();
_anotherClass.Method = new Action(() => {
this.Method();
});
}
partial void Method();
//sometimes this method will be implemented
//partial void Method() {
//do something
//}
}
public class AnotherClass {
public Action Method { get; set;}
public void SomeOtherMethod(){
this.Method();
}
}
Les classes sont étroitement couplées, ils sont dans une relation parent-enfant. Je veux que le parent dispose d'une méthode qu'il peut ignorer pour connaître les changements de propriétés sur l'enfant. Je pourrais attacher des gestionnaires d'événements à chacun des enfants, mais l'enfant sait déjà à propos de son parent, donc avoir l'enfant informe directement le parent semble être la voie à suivre. Sauf quand le parent ne s'en soucie pas c'est pourquoi je veux pouvoir mettre en place un partiel si je m'en soucie. Cette question concerne essentiellement la facilité de programmation par rapport à la performance. Je sais que je pourrais attacher des gestionnaires d'événements seulement à la situation où je m'inquiète, mais avec l'implémentation comme ci-dessus je peux générer toutes les méthodes partielles et seulement implémenter les partiels si j'en ai besoin.
Ma question concerne les moments où la méthode partielle Method()
n'est pas implémentée. Lorsque la méthode Action est appelée, le compilateur l'élimine-t-il lorsque son corps est vide? Si je reçois un tas de ces appels d'action, est-ce que je pourrais subir une pénalité de performance? Y a-t-il un meilleur moyen d'obtenir la même fonctionnalité?
Vous n'obtiendrez pas de succès perceptible, appeler une action vide est une opération assez bon marché. Je doute que le compilateur écrase l'action vide. –
Je ne comprends pas pourquoi peope parler performance abotu. Si c'est important ... MESUREZ-LE; –