2010-07-22 30 views
1

我有四個不同的業務對象,每個調用其相應的FillBusinessObject方法來逐個填充所有單個對象屬性。現在我想創建一個應該能夠填充每種類型的業務對象的通用方法。我創建了一個基類,所有業務對象都從這個基類繼承,但我無法弄清楚如何從一個通用方法填充單個對象屬性。如何從單一方法填充多種類型的業務對象?

這是可能的(如果是的話,那麼如何)還是我在夢幻世界?

P.S.我不希望採用像LINQ這樣的其他路線。

+0

你有沒有想過像Autofac或ninject librbaries? 只有當您從另一個模型/對象填充模型/對象時,這纔會起作用。 – Ahuman 2014-12-19 14:16:09

回答

1

看起來你太過複雜了。

您可以編寫一個方法來填充屬於公共基類的部分,然後爲每種類型調用specialize方法。

+0

好的..你的意思是說用單獨的方法來填充每個業務對象是最優的嗎? – Dienekes 2010-07-22 18:47:38

+1

最好的可讀性,是的。 – 2010-07-22 18:48:52

+0

和從最佳實踐的角度? – Dienekes 2010-07-22 18:56:21

0

怎麼是這樣的:

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

^^和Henk說的不一樣嗎? – Dienekes 2010-07-23 17:54:36

相關問題