我在C#2008中使用ASP.NET 3.5。
我有一张包含以下数据的表格:
Id Code Message Details
-- ---- ------ ------------
1 111 xxxxx xxxxxxxxxxx
2 222 yyyyy yyyyyyyyyyy
3 333 zzzzz zzzzzzzz
依旧......
这是静态数据,我想在整个应用程序中使用它。
我创建了一个具有以下属性的类:
public class CodeDetails
{
public int Id { get; set; }
public int Code { get; set; }
public string message { get; set; }
public string details { get; set; }
}
并创建了另一个课程codeDetailsList
,我想将其作为单身人士,如下所示:
public class codeDetailsList
{
private List<CodeDetailst> lstCodeDetailst;
private CodeDetailst()
{
lstCodeDetails = new List<CodeDetails>();
}
}
现在,我想要做的是,我想将上面给出的表格数据的项目添加到这个单例类的列表中,并希望在整个应用程序中访问它。
我的问题是如何添加项目并访问它们?
答案 0 :(得分:3)
与Varun的答案类似,我只是想完全实现。
public class CodeDetailsList
{
private static readonly CodeDetailsList _instance = new CodeDetailsList();
public static CodeDetailsList Instance
{
get { return _instance; }
}
public ReadOnlyCollection<CodeDetails> lstCodeDetailst { get; private set; }
private codeDetailsList()
{
var masterList = new List<CodeDetails>();
masterList.Add(new CodeDetails(1, 111, "xxxxx", "xxxxxxxxxxx"));
masterList.Add(new CodeDetails(2, 222, "yyyyy", "yyyyyyyyyyy"));
//... And so on ...
//mark the list as read only so no one can add/remove/replace items in the list
lstCodeDetailst= masterList.AsReadOnly();
}
}
public class CodeDetails
{
public CodeDetails(id, code, message, details)
{
Id = id;
Code = code;
Message = message;
Details = details;
}
//Mark the setters private so no one can change the values once set.
public int Id { get; private set; }
public int Code { get; private set; }
public string Message { get; private set; }
public string Details { get; private set; }
}
当您第一次尝试访问CodeDetailsList
时,Instance
的构造函数将被调用一次(如果类中有其他静态成员,则构造函数将在第一次调用任何静态成员时运行)
因为lstCodeDetaillst
是ReadOnlyCollection
来电者,将无法添加,删除或替换列表中的对象。另外因为现在CodeDetails
有私人制定者,所以其中的所有项目也都是“只读”。
答案 1 :(得分:1)
public class CodeDetailsList
{
public static readonly CodeDetailsList Instance = new CodeDetailsList();
public List<CodeDetails> ListCodeDetails { get; private set; }
private CodeDetailsList()
{
ListCodeDetails = new List<CodeDetails>
{
new CodeDetails { Id = 1, Code = 1, Details = "xxxxx", Message = "xxxxx"},
new CodeDetails { Id = 2, Code = 2, Details = "yyyyy", Message = "yyyy"} // ...
};
}
}
您应该在codeDetailsList的构造函数中初始化数据。构造函数应保持私有状态,以确保您不创建新实例。使用Instance
上的CodeDetailsList
字段访问数据。
答案 2 :(得分:0)
你有没有故意省略Singleton类中的getInstance()方法?反正...
添加内容可能类似于:
CodeDetails codeDetails = new CodeDetails();
codeDetails.setId("id1");
codeDetails.setCode("code1");
codeDetails.setMessage("message1");
codeDetails.setDetails("details1");
(CodeDetailsList.getInstanceMethod()).add(codeDetails);
访问:
CodeDetails codeDetails = (CodeDetails)(CodeDetailsList.getInstaceMethod()).get(0);
如果您有多个记录
,可以将其置于循环中希望这有帮助