我有一个基类:
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的所有子类都有访问权限)它)。
基本构造函数似乎在子构造函数中的任何代码之前触发。
有没有办法让基类看到传递给子类的参数?
答案 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)
{
}
}