2010-07-22 12 views
1

J'ai quatre objets Business différents et chacun appelle sa méthode FillBusinessObject correspondante pour remplir une par une toutes les propriétés individuelles de l'objet. Maintenant, je souhaite créer une méthode commune qui devrait être capable de remplir chaque type d'objet métier. J'ai créé une classe de base à partir de laquelle tous les objets métier héritent, mais je ne suis pas en mesure de comprendre comment remplir les propriétés d'objet individuelles à partir d'une méthode commune. Est-ce possible (si oui, alors comment) ou suis-je dans dreamworld?Comment remplir plusieurs types d'objets métier à partir d'une seule méthode?

P.S. Je ne souhaite pas prendre une route différente comme LINQ.

+0

Avez-vous pensé à librbaries comme Autofac ou ninject? Cela ne fonctionnerait que si vous remplissez le modèle/objet à partir d'un autre modèle/objet. – Ahuman

Répondre

1

On dirait que vous compliquez trop les choses.

Vous pouvez écrire une méthode qui remplit la partie qui appartient à une classe de base commune, puis appelle une méthode specialize pour chaque type.

+0

Ok .. Voulez-vous dire qu'il est optimal d'aller avec des méthodes distinctes pour remplir chaque objet de gestion? – Dienekes

+1

Optimal dans la lisibilité, oui. –

+0

et d'un point de vue des meilleures pratiques? – Dienekes

0

Que diriez-vous quelque chose comme ceci:

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // Create some business objects and ask them to initialize 
      // themselves. 
      // 

      var bo1 = new BusinessObject1(); 
      var bo2 = new BusinessObject2(); 

      bo1.Fill(); 
      bo2.Fill(); 
     } 

     public abstract class BusinessObjectBase 
     { 
      public int x { get; private set; } 

      public virtual void Fill() 
      { 
       x = 123; 
      } 
     } 

     public class BusinessObject1 : BusinessObjectBase 
     { 
      public int y { get; private set; } 

      public override void Fill() 
      { 
       // Let base class fill itself. 
       base.Fill(); 

       // Now we fill our own properties. 
       this.y = 456; 
      } 
     } 

     public class BusinessObject2 : BusinessObjectBase 
     { 
      public int z { get; private set; } 

      public override void Fill() 
      { 
       // Let base class fill itself. 
       base.Fill(); 

       // Now we fill our own properties. 
       this.z = 456; 
      } 
     } 
    } 
} 
+0

^^ N'est-ce pas un peu comme ce que dit Henk? – Dienekes