System.NullReferenceException:EveAI

时间:2013-12-03 11:53:38

标签: c# nullreferenceexception

我已经搜索了答案并尝试了许多不同的解决方案,但似乎都没有效果!。

使用EveAI http://wiki.eve-id.net/EveAI

  

System.NullReferenceException:未将对象引用设置为对象的实例。 Form1.PopulateMarketIDs()

private void PopulateMarketIDs()
{
    eapi.EveApi MyApi = new eapi.EveApi();
    List<int> MarketIDs = new List<int>();
    string SelectedItem;

    List<EveAI.Product.ProductType> Products = new List<EveAI.Product.ProductType>();

    foreach (string item in kryptonListBox1.Items)
    {
        SelectedItem = item;

        foreach (EveAI.Product.ProductType Prod in MyApi.EveApiCore.ProductTypes)
        {
            if (Prod.MarketGroup != null)
            {
                if (Prod.MarketGroup.ParentGroup.Name == SelectedItem)
                {
                    Products.Add(Prod);
                }
                else
                {
                    if (Prod.MarketGroup.Name == SelectedItem)
                    {
                        Products.Add(Prod);
                    }
                }
            }
        }
    }
}

kryptonListBox1至少包含一个项目,例如“Mining Drones”。 它工作正常,它列出了应该的产品,但是当它到达最后一个产品(显示)然后崩溃时出现空错误。

我知道它不会返回任何内容,我已经删除了它的输出部分。

2 个答案:

答案 0 :(得分:0)

我认为你的麻烦在于

<强> MyApi.EveApiCore.ProductTypes

这是一个静态资源吗?

否则你必须在使用前引用它。

答案 1 :(得分:0)

我已将代码更改为:

foreach (string item in kryptonListBox1.Items)
{
     foreach (EveAI.Product.ProductType Prod in MyApi.EveApiCore.ProductTypes)
     {
         if (Prod.MarketGroup != null)
         {
             if (Prod.MarketGroup.Name == item)
             {
                if (Prod.Name.Contains("Blueprint") == false)
                {
                    kryptonListBox2.Items.Add(Prod.Name);
                    Products.Add(Prod);
                }
             }
         }
     }
}

foreach (EveAI.Product.ProductType T in Products)
{
  kryptonListBox3.Items.Add(MyApi.EveApiCore.GetIdForObject(T));
}

这很有效。