private Module()
{
}
private static Module Sigleton = null;
public List<PGGSOA.COMMON.Components.sys_ModuleTable> _list = null;
static readonly object padlock = new object();
public static Module Instance()
{
if (Sigleton == null)
{
lock (padlock)
{
if (Sigleton == null)
{
Sigleton = new Module();
Sigleton.GetModuleList();
}
}
}
return Sigleton;
}
private void GetModuleList()
{
_list = ModuleAllList();
}
private void Refresh()
{
GetModuleList();
}
/// <summary>
/// 返回对应的应用所有模块代码
/// </summary>
/// <returns></returns>
public static List<PGGSOA.COMMON.Components.sys_ModuleTable> ModuleAllList()
{
return PGGSOA.DAL.Module.ModuleAllList();
}
为的就是把sys_ModuleTable保存在内存中,当有新增、修改或者删除的时候,通过调用
Module md=new Module();
md.Refresh();
来进行对_list的更新,可是在此处显示记录已经有更改。但是在页面中应用的时候却没有变化,页面代码如下:
List<PGGSOA.COMMON.Components.sys_ModuleTable> listModule = new List<PGGSOA.COMMON.Components.sys_ModuleTable>();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
PGGSOA.BLL.Module bm = PGGSOA.BLL.Module.Instance();
listModule = bm._list;//此处却获取不到更新后的_list,请教这是为什么?
}
}
恩 我看了一下你的代码, 好费尽才看懂。
_list是bm的成员,不是static的,所以这个问题好像和static没有关系。
你在Module里面用了一个单件,也就是说你的_list在.Instance()之后会被构造,但是更新的时候就不可以了阿,除非显式调用bm.Refresh();
我向页面代码如果是这样子或许能达到效果:
if (!IsPostBack)
{
PGGSOA.BLL.Module bm = PGGSOA.BLL.Module.Instance();
bm.Refresh();
listModule = bm._list;
}