0

私はc#リストに問題があります。Managepagesidリストに新しいオブジェクトを追加しているときに、どこにポイントがないのかわかりません。

 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リストに新しいアイテムを追加するためにアクセスしようとしていますが、null例外が発生します。ヘルプ!

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);
            }

スタックトレースが追加されました!

Exception>System.NullReferenceExceptionObject参照がオブジェクトのインスタンスに設定されていません。g:\ Development \ Vega_MongoDB \ Vega_MongoDB \ FBDataAccess \ ClientFBRepository.cs:line 48のVega_MongoDB.FBDataAccess.ClientFBRepository.ClientsData(String accessToken)のg:\ Development \ VaのVega_MongoDB.Models.ClientRepository..ctor(String connection) \ Vega_MongoDB \ Models \ Clients \ ClientRepository.cs:line 47 at Vega_MongoDB.Models.ClientRepository..ctor()in g:\ Development \ Vega_MongoDB \ Vega_MongoDB \ Models \ Clients \ ClientRepository.cs:line 23atVega_MongoDB.Controllers.Client。 ..cctor()in g:\ Development \ Vega_MongoDB \ Vega_MongoDB \ Controllers \ ClientsController.cs:line 18

そして、pagedetailsオブジェクトを確認しました。これには、すべてのデータが含まれています。

ありがとう

ヴィシュヌ

4

3 に答える 3

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);
}
于 2012-10-19T14:37:08.347 に答える
1

これをクラスに追加してみてください。

public Clients()
{
  this.Manage_Pages_id = new List<ManagePages>();
}
于 2012-10-19T14:38:45.467 に答える
1

リストに何かを追加する前に、リストを初期化する必要があります。これは、クラスのコンストラクターClientsまたは呼び出し元のコード(Artemが提案したとおり)で実行できます。

public class Clients
{
    //properties

    public Clients()
    {
         Manage_Pages_id = new List<ManagePages>();
    }
}
于 2012-10-19T14:39:21.547 に答える