首页 文章

基类构造函数参数

提问于
浏览
0

我有一个基类:

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

所有数据访问类都使用Base类 .

例如:

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

    .....

注意,'Session'在Base类中声明 .

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

所以他们采用一个参数,即会话对象 .

问题是,我需要我的基类来知道这个会话对象 - 但似乎基类具有Session的空值(它是基类中的公共声明,并且Base的所有子类都可以访问它) .

在子构造函数中的任何代码之前,基本构造函数似乎都会触发 .

有没有办法让基类看到传递给子类的参数?

1 回答

  • 3

    如果需要,请使基类构造函数获取该会话对象:

    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)
        {
        }
    }
    

相关问题