2011-06-03 90 views
0

我有一个父类,像这样:填充父实例

public abstract class Business<T> : IBusiness<T> where T : Entity 
{ 
    protected Data<T> data; 

    public IEnumerable<T> Select(DataContext db) 
    { 
     return data.Select(db); 
    } 
} 

,我需要填充的孩子CLAS“数据”成员的实例。

目前,我这样做:

public class UserBusiness : Business<User> 
{ 
    public UserBusiness() 
    { 
     data = new UserData(); 
    } 
} 

我不知道是否还有其他一些方法。

我也在父类链路此使用的抽象功能:

保护抽象数据的GetData();

强制子类传递实例。

哪种方法最好?任何建议?

预先感谢

+0

使用依赖注入框架(例如Ninject)。将所有的孩子和数据类注册到框架中,框架将负责为您建立依赖关系。 – 2011-06-03 12:07:38

回答

2

创建抽象构造:

public abstract class Business<T> : IBusiness<T> where T : Entity 
{ 
    protected Data<T> data; 

    Business<T>(T _data) 
    { 
     data = _data 
    } 
    public IEnumerable<T> Select(DataContext db) 
    { 
     return data.Select(db); 
    } 
} 

然后调用它在派生构造:

public class UserBusiness : Business<User> 
{ 
    public UserBusiness() : 
     base (new UserData()) 
    { 

    } 
}