2010-09-28 11 views
3

J'ai un éditeur générique dans la page ASP.NET pour éditer les valeurs de recherche pour différentes tables de base de données.ASP.NET Design Question - Usine vs choix dynamique du code derrière (si cela est possible)

Le code derrière utilise une classe de base qui gère 99% du travail à travers toutes les différentes recherches dans le système.

Une classe C# est transmise à la classe de base à partir du code ci-dessous. Une classe C# différente est transmise à la propriété Gestionnaire de recherche pour chaque recherche. Une classe C# différente est transmise. Je pourrais utiliser le modèle d'usine pour éviter un gros sinon dans le code derrière. Cependant, je me demandais si le même effet pourrait être atteint via une sous-classe du code derrière par exemple.

public partial class LookupsEditorSubClass : LookupsEditor 
{ 
    public LookupsEditorSubClass() { 
     base.LookupManager = new ConcreteManagerClass(); 
    } 
} 

Questions: 1) Cela nécessiterait le code sous-jacent classe dynamiquement définir ..... le code-behind de classe peut être réglé dynamiquement et est-il même possible d'hériter d'une classe partielle? 2) Si vous utilisez une usine à la place, est-ce que je dois juste accepter un gros sinon?

+0

Votre code ne compile pas. 'this.LookupManager = new ConcreteManagerClass();' n'est pas valide au niveau d'une classe. Vouliez-vous dire cela dans un constructeur? – Steven

+0

La classe de gestionnaire de béton est juste un bout pour illustrer mon point – AJM

Répondre

1

Une chance que vous pourriez utiliser MVC pour cela? Je vois que vous avez inclus .NET 3.5 dans les balises, donc il n'y a pas de véritable raison technique pour laquelle vous ne devriez pas.

La raison pour laquelle je demande est que ce problème serait facilement résolu en utilisant MVC. Seul le modèle changerait entre vos différents cas.

Mise à jour: Suite à vos commentaires, je pense que l'approche usine est probablement le meilleur pour vous. Le fait de déranger les cours de codebehind n'a entraîné que des ennuis dans le passé. Plutôt que de changer la classe codebehind, pourquoi n'utilisez-vous pas usercontrols pour l'édition? Ensuite, vous pouvez charger un contrôle utilisateur différent en fonction des exigences particulières de l'entité que vous éditez. Cela pourrait être fourni par une usine.

+0

Bon point mais malheureusement son travail sur un système existant, donc la conversion en MVC n'est pas un jeu car personne ne veut payer pour cela! – AJM

+0

Intéressant. MVC est gratuit. En ce qui concerne votre temps, il suffit d'environ une heure pour convertir une application ASP.NET en une application combinée ASP.NET et MVC. Voir ceci: http://www.codeproject.com/KB/aspnet/webformmvcharmony.aspx La modification de la page devrait être triviale. –

+0

Je peux essayer ceci pour le plaisir mais je suis contraint par le client sur celui-ci même si j'avais une baguette magique qui l'a fait instantanément .... – AJM