基类构造函数参数

本文关键字:参数 构造函数 基类 | 更新日期: 2023-09-27 18:18:09

有一个基类:

    public BaseData()
    {
        var dbConnection = "BasicFinanceEntities";
        if (Session != null && Session.TestModeActive)
        {
            dbConnection = "TestConnection";
        }
        Context = new BasicFinanceEntities(dbConnection);
        Context.Configuration.LazyLoadingEnabled = false;
    }

所有的数据访问类都使用基类。

,

 public class AuthenticationData : BaseData
    {
        public AuthenticationData(SessionObject session)
        {
            Session = session;
        }
    .....

注意,'Session'是在基类中声明的。

我所有的数据类都采用一个Session对象,这样我就知道用户是否经过身份验证,他的id(对于last_update_user类型的东西),以及一些安全检查(这个用户可以看到这个帐户…)。

它们接受一个参数,也就是session对象

问题是,我需要我的基类知道这个会话对象-但似乎基类有一个空值的会话(这是一个公共声明在基类,和所有的子类的基可以访问它)。

似乎基构造函数在子构造函数中的任何代码之前触发。

是否有一种方法可以让基类看到传递到子类的参数?

基类构造函数参数

如果需要的话,让基类构造函数接受会话对象:

public BaseData(SessionObject session)
{
    Session = session;
    var dbConnection = "BasicFinanceEntities";
    if (Session != null && Session.TestModeActive)
    {
        dbConnection = "TestConnection";
    }
    Context = new BasicFinanceEntities(dbConnection);
    Context.Configuration.LazyLoadingEnabled = false;
}

,然后从派生类的构造函数调用该构造函数:

public class AuthenticationData : BaseData
{
    public AuthenticationData(SessionObject session) : base(session)
    {
    }
}