Question

Je cherche à faire quelque chose comme ceci

public class ProductBiz: BizBase<Product> {

public List<String> BrokenRules {get;set;}

// Some kind of data + biz operation implementation

}

public static class ProductBizExtensions{

public ProductBiz Rule1(this ProductBiz prodBiz)
{}
public ProductBiz Rule2(this ProductBiz prodBiz)
{}

public bool ApplyRules (this ProductBiz prodBiz, Func<ProductBiz,bool> ruleset){}
}

Ensuite, dans le code client utiliser comme

productBiz.Rule1().Rule2();
productBiz.Rule2().Rule1();

ou

// create multicasted delegate of type Func<ProductBiz,bool> say rulesetDelegate

productBiz.ApplyRules(rulesetDelegate);

Je voulais juste poser avant de plonger et se noient.

Quels sont les pièges potentiels avec cette approche ???

Merci d'avance

Était-ce utile?

La solution

Je ne sais pas ce que vous entendez par possible. Il est certainement possible d'écrire un moteur de règles de cette façon et vous avez demo'd un aperçu de la façon d'y parvenir.

Ne pas oublier que les méthodes d'extension ne sont que du sucre syntaxique sur des méthodes statiques. Demander si vous pouvez faire le type de programmation X avec des méthodes d'extension n'est pas différent que de demander si vous pouvez faire le type de programmation X avec des méthodes statiques. Les méthodes statiques peuvent ne pas être aussi belle, mais ils sont tout aussi puissants.

Autres conseils

Si vous cherchez à changer les règles à exécution, alors vous voudrez peut-être envisager quelque chose comme MEF ou similaire.

Votre solution est bien jusqu'à la compilation, il est réglé et verrouillé, à partir du son de vos commentaires que vous êtes à la recherche de flexibilité d'exécution.

Regardez l'application des règles commerciales dans AAPC http://lhotka.net/ . Dans ce que vous définissez une règle w / une signature particulière, et l'ajouter dans le magasin de la règle de l'objet, que ce soit à un niveau de classe ou niveau de l'instance. La syntaxe de ce que vous essayez de faire est rebutant, mais la méthode (définition des règles métier via des méthodes statiques qui sont exécutés au moment de l'exécution) est exactement ce que fait l'AAPC.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top