我有2个构造函数,其中有一个基本调用;
public MyApplication(myEntities context)
:base(context)
{
_1stApp = new 1stApplication(this._context);
_2ndApp = new 2ndApplication(this._context);
// etc...
}
public MyApplication()
:base()
{
_1stApp = new 1stApplication(this._context);
_2ndApp = new 2ndApplication(this._context);
// etc...
}
以及基础构造函数
public BaseApplication()
{
_context= new myEntities ();
}
public BaseApplication(myEntities context)
{
if (context==null)
_context = context;
else
_context= new myEntities ();
}
在MyApplication构造函数中我要么传递由另一个应用程序创建的上下文,要么我想创建一个新的上下文。在任何一种情况下,我都希望与MyApplication实例化的所有其他应用程序类(1stApp,2ndApp等)共享相同的上下文。
我不想在两个地方都保留相同的代码。
答案 0 :(得分:5)
public MyApplication(myEntities context)
:base(context)
{
_1stApp = new 1stApplication(this._context);
_2ndApp = new 2ndApplication(this._context);
etc...
}
public MyApplication()
:this(new myEntities())
{ }
答案 1 :(得分:1)
您只能使用一个c'tor(如果您使用的是C#3.5或更高版本)。只需使用这样的可选参数:
public MyApplication(myEntities context = null)
:base(context)
{
_1stApp = new 1stApplication(this._context);
_2ndApp = new 2ndApplication(this._context);
etc...
}
public BaseApplication(myEntities context)
{
if (context!=null)
_context = context;
else
_context= new myEntities ();
}
HTH Thomas
答案 2 :(得分:0)
在构造函数体之前,使用:
对于基类构造函数,使用:
: base (arguments)
对于同一个类,但使用另一个构造函数:
: this (arguments)
在您的情况下,这个this
关键字:
public MyApplication(myEntities context)
:base(context)
{
// custom
}
public MyApplication()
: this (new myEntities())
{
_1stApp = new 1stApplication(this._context);
_2ndApp = new 2ndApplication(this._context);
etc...
}