System.NullReferenceException: EveAI
Frecuentes
Visto 211 veces
0
He buscado la respuesta y he probado muchas soluciones diferentes, ¡pero ninguna parece funcionar!
Usando Eve AI http://wiki.eve-id.net/EveAI
System.NullReferenceException: la referencia de objeto no se establece en una instancia de un objeto. 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);
}
}
}
}
}
}
El kryptonListBox1 contiene al menos un elemento como "Mining Drones". Funciona bien, enumera los productos como debería, pero cuando llega al último producto (se muestra) y luego falla con el error nulo.
Soy consciente de que no devolverá nada, he recortado la sección de salida.
2 Respuestas
0
Creo que tu problema está en el
MyApi.EveApiCore.ProductTypes
¿Es este un recurso estático?
de lo contrario, debe hacer referencia a él antes de usarlo.
Respondido el 03 de diciembre de 13 a las 12:12
0
He cambiado el código a:
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));
}
Y esto está funcionando muy bien.
Respondido el 04 de diciembre de 13 a las 11:12
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c# nullreferenceexception or haz tu propia pregunta.
Sí está referenciado. utilizando EveAI; usando eapi = EveAI.Live;. Recorre todos los productos correctamente hasta lo que parece ser el último de los artículos en el MarketGroup dado. - dai007uk
parece que tomó el último ejemplo de vb.net y lo hizo en c#, pero está iterando una lista diferente a la del ejemplo, itera los grupos de mercado y los tipos de productos, ¿ha probado la misma iteración real del ejemplo? Es difícil ayudarte más sin usar esta API y sin una cuenta de EVE Online. - lanello
El ejemplo de vb.net es para hacer la vista de árbol, esto ya lo hice en C#. El código que publiqué toma los productos que están contenidos en el grupo de mercado que se muestra en la vista de árbol. Por alguna extraña razón, sigo recibiendo este error nulo, aunque no puedo ver que se pase ningún valor nulo. Esta sección de código no requiere ninguna API ni una cuenta. Está utilizando datos estáticos contenidos dentro de EveAI - dai007uk