1

我正在使用带有 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>();
    }
}

现在,我想做的是,我想将上面给定的表格数据的项目添加到这个单例类的列表中,并希望在整个应用程序中访问它。

我的问题是如何添加项目并访问它们?

4

3 回答 3

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有私人设置器,其中的所有项目实际上也是“只读”的。

于 2013-08-12T05:44:15.057 回答
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

于 2013-08-12T05:33:11.880 回答
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);

如果你有很多记录,你可以把它放在一个循环中

希望这可以帮助

于 2013-08-12T06:29:18.950 回答