2012-10-19 50 views
0

我有一个C#列表的问题,不知道在向Managepagesid列表中添加一个新对象的时候我错过了点!c#列出使用For循环添加项目

public class Clients 
    { 
     [BsonId] 
     public string Id { get; set; } //Object ID managed by MongoDb 

     public string Name { get; set; } //Client Name 

     public string Phone { get; set; } //Client Phone 

     public string Email { get; set; } //Client E-mail 

     public string Username { get; set; } //Client Username 

     public DateTime LastModified { get; set; } //Client Last Login 

     public string FB_User_Id { get; set; } //Client FB User ID 

     public AccessToken UserAccessToken { get; set; } //AccessToken which is stored while user is logged in. 

     public List<ManagePages> Manage_Pages_id { get; set; } //The pages maintained by the specific client 
    } 

我试图访问添加新项目,到ManagePage_id名单,但其thrwing一些空异常..帮助!

Clients client = new Clients(); 

      client.FB_User_Id = FBData.id; 
      client.Name = FBData.name; 
      client.Email = FBData.email; 
      client.Username = FBData.username; 

      for (int index = 0; index < FBData.accounts["data"].Count; index++) 
      { 
       ManagePages pagedetails = new ManagePages() 
       { 
        page_id = FBData.accounts["data"][index].id, 
        page_name = FBData.accounts["data"][index].name, 
        ManagePages_AccessTokens = new AccessToken() 
        { 
         AccessToken_accessToken = FBData.accounts["data"][index].access_token, 
         AccessToken_expiryDate = DateTime.Now 
        }, 
        ManagePages_category = FBData.accounts["data"][index].category 
       }; 

       var category = pagedetails.ManagePages_category; 

       client.Manage_Pages_id.Add(pagedetails); 
      } 

Stack Trace added added!

异常> System.NullReferenceException引用未设置为对象的实例。 Vega_MongoDB.FBDataAccess.ClientFBRepository.ClientsData(String accessToken)in g:\ Development \ Vega_MongoDB \ Vega_MongoDB \ FBDataAccess \ ClientFBRepository.cs:line 48 at Vega_MongoDB.Models.ClientRepository..ctor(String connection)in g:\ Development \ Vega_MongoDB \ Vega_MongoDB \ Models \ Clients \ ClientRepository.cs:Vega_MongoDB.Models.ClientRepository.ctor()中的第47行 ,位于Vega_MongoDB的g:\ Development \ Vega_MongoDB \ Vega_MongoDB \ Models \ Clients \ ClientRepository.cs中:第23行 。 Controllers.ClientsController..cctor()在G:\开发\ Vega_MongoDB \ Vega_MongoDB \ \控制器ClientsController.cs:行18

而且我已经检查了pagedetails对象,它包含了所有的数据..

由于

毗湿奴

+0

你还可以添加stacktrace吗? –

+0

你在哪里看到异常? – jrummell

回答

1

尝试添加该到类:

public Clients() 
{ 
    this.Manage_Pages_id = new List<ManagePages>(); 
} 
+0

是的,做了一个记录!谢谢:) –

2

您应该加入项目前创建列表的一个实例:

client.Manage_Pages_id = new List<ManagePages>(); 
for (int index = 0; index < FBData.accounts["data"].Count; index++) 
{ 
    ManagePages pagedetails = new ManagePages() 
    { 
     page_id = FBData.accounts["data"][index].id, 
     page_name = FBData.accounts["data"][index].name, 
     ManagePages_AccessTokens = new AccessToken() 
     { 
      AccessToken_accessToken = FBData.accounts["data"][index].access_token, 
      AccessToken_expiryDate = DateTime.Now 
     }, 
     ManagePages_category = FBData.accounts["data"][index].category 
    }; 

    var category = pagedetails.ManagePages_category; 

    client.Manage_Pages_id.Add(pagedetails); 
} 
+0

令人敬畏的兄弟!它像一个魅力工作!我会在8分钟内标记为答案! –

+1

好,回答,但我会建议把它的构造函数在你的课堂干(不要重复自己)。 –

1

需要初始化列表在添加任何东西之前。您可以在Clients类的构造函数中或在您的调用代码中执行此操作(如Artem建议的那样)。

public class Clients 
{ 
    //properties 

    public Clients() 
    { 
     Manage_Pages_id = new List<ManagePages>(); 
    } 
} 
+0

是的,AJ ..工作就像一个魅力! –