2012-02-21 123 views
0

我有一个类,它有一个公共属性“的AppController”,具体如下:派生类使用基类的属性?

public class FAST 
{ 
    #region Props 

    public AppController.AppControllerClass appController = new AppController.AppControllerClass(); 

    #endregion 

    #region Contructors 

    public FAST(AppController.AppControllerClass appcontroller) 
    { 
     this.appController = appcontroller; 
    } 

    #endregion 
} 

我还有一个几类,其中我想用快速的AppController中,上述class.They样子:

public class Forecast 
{ 
    #region Properties 

    private int _forecastnumber; 

    public int ForecastNumber 
    { 
     get { return _forecastnumber; } 
     set { _forecastnumber = value; } 
    } 

    private DateTime _startdate; 

    public DateTime StartDate 
    { 
     get { return _startdate; } 
     set { _startdate = value; } 
    } 

    private DateTime _enddate; 

    public DateTime EndDate 
    { 
     get { return _enddate; } 
     set { _enddate = value; } 
    } 

    private DateTime _deadline; 

    public DateTime Deadline 
    { 
     get { return _deadline; } 
     set { _deadline = value; } 
    } 

    private string _name; 

    public string Name 
    { 
     get { return _name; } 
     set { _name = value; } 
    } 

    private string _type; 

    public string Type 
    { 
     get { return _type; } 
     set { _type = value; } 
    } 

    private string _description; 

    public string Description 
    { 
     get { return _description; } 
     set { _description = value; } 
    } 

    private string _status; 

    public string Status 
    { 
     get { return _status; } 
     set { _status = value; } 
    } 

    #endregion 

    #region Constructors 

    public Forecast() 
    { 

    } 
    #endregion 

    #region Methods 

    public static void InsertForecast(Forecast forecast) 
    { 
     try 
     { 
      this.appController.Execute(appController.nDC.FASTData.InsertForecast(forecast.StartDate, forecast.EndDate, forecast.Deadline, forecast.Type, forecast.Name, forecast.Description, forecast.Status)); 
     } 
     catch (Exception ex) 
     { 
      this.appController.LogError(ex); 
     } 
    } 

    #endregion 
} 

我希望能够一次申报快班,通过在AppController中,然后自由地使用我的其他类,他们会用快班的AppController的。

这可以完成吗? (继承?)

感谢您的任何帮助。

回答

1

这听起来像你只是想为你的FAST类的静态类。如果您将AppController变量定义为静态,则可以从任何地方访问它。

1

我会拒绝继承。继承表明“是”关系,例如“预测是应用程序控制器的专用版本。”聚合是一种专门的对象组合形式,它表明一种“有”的关系,例如, “预测有一个应用程序控制器。”

http://en.wikipedia.org/wiki/Object_composition#Aggregation

你可以添加一个setter方法来设置你的FAST对象作为预测的属性:

public FAST appController { get; set; } 

然后

var f = new FAST(new AppController.AppControllerClass()); 
var forecast = new Forecast(); 
var forecast2 = new Forecast(); 
forecast.appController = f; 
forecast2.appController = f; 
+0

感谢。我不喜欢这种方法是我每次使用预测类或创建类的实例时都需要设置appController。 – Rivka 2012-02-21 22:22:39

+0

你有没有考虑过依赖注入?有一些很好的.NET库,比如Ninject。 – 2012-02-21 22:28:29

相关问题