基类构造函数参数

时间:2014-08-16 03:17:59

标签: c# oop inheritance

我有一个基类:

    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;
        }

    .....

注意,'会话'在Base类中声明。

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

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

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

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

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

1 个答案:

答案 0 :(得分: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)
    {
    }
}