Quelle est la meilleure façon d'implémenter une stratégie pour le constructeur d'une classe template/abstract en C#? J'ai plusieurs classes qui sont toutes basées sur l'analyse d'une chaîne dans le constructeur. L'analyse est effectuée dans une méthode statique qui crée une liste de paires de valeurs clés et est commune à toutes les classes, mais certains champs sont également communs à toutes les classes. J'utilise donc une classe de modèle abstrait.Implémentation d'une stratégie pour le constructeur
Le problème est que je ne vois pas un moyen d'hériter de l'implémentation du constructeur de la classe de base abstraite. Sinon, j'implémenterais la stratégie du constructeur dans la classe de base et forcerais le traitement des listes à l'intérieur de certaines méthodes abstraites.
Edit: Ajouté pas le code de travail pour la classe modèle
public abstract class XXXMessageTemplate
{
public XXXMessageTemplate(string x) // implementation for the constructor
{
Parse(x);//general parse function
CommonFields();//filling common properties
HandlePrivateProperties();//fill individual properties
HandlePrivateStructures();//fill individual structures
}
abstract void HandlePrivateProperties();
abstract void HandlePrivateStructures();
}
The actual messages should not implement any constructor and only implement the HandlePrivateProperties and HandlePrivateStructures functions.
Je ajout d'un pseudo-code pour rendre l'émetteur plus propre ... – weismat
O k - cela signifie que mon intension est impossible à forcer le modèle de stratégie ici - je dois implémenter ensuite un constructeur qui appelle un constructeur de nom de fonction protégée qui appelle alors les fonctions Handle. Me rappelle la restriction qu'un constructeur ne peut pas appeler un autre constructo d'une classe. – weismat
Les constructeurs peuvent appeler des constructeurs d'autres classes - vous pouvez écrire "object o = new object()" par exemple. Vous ne pouvez pas essayer d'utiliser un autre constructeur comme faisant partie de votre propre chaîne de constructeurs - cela n'aurait pas beaucoup de sens. –