Как читать свойства объекта внутри массива - PullRequest
1 голос
/ 20 июля 2011

У меня возникли проблемы с чтением свойств элемента, который я поместил в массив, и я нигде не могу найти ответ.

ArrayList itemsArrayList = new ArrayList();

itemsArrayList.Add(abyssalScepter);         
itemsArrayList.Add(aegisOfTheLegion);

itemInBuildAbilityPower = itemsArrayList[0].abilityPower;

Мне нужно прочитать свойстваобъекты в массиве, чтобы я мог применить их значения в другом месте, но это ни к чему не приведет.

Ответы [ 3 ]

5 голосов
/ 20 июля 2011

Вам нужно привести объект к ожидаемому типу (и надеяться, что он действительно этого типа).

itemInBuildAbilityPower = ((Item)itemsArrayList[0]).abilityPower;

Лучше (если код инфраструктуры принадлежит вам) использовать общий контейнер, например, List<T>.

List<Item> itemsArrayList = new List<Item>

itemsArrayList.Add(abyssalScepter);         
itemsArrayList.Add(aegisOfTheLegion);

itemInBuildAbilityPower = itemsArrayList[0].abilityPower;
1 голос
/ 20 июля 2011

Основываясь на ответе elder_george, вот пример того, что вы могли бы сделать, если abyssalScepter и aegisOfTheLegion не совсем одного типа:

using System.Collections.Generic;
class Power { }
interface IAbilityPower { Power abilityPower { get; set; } }
class Scepter : IAbilityPower { public Power abilityPower { get; set; } }
class Aegis : IAbilityPower { public Power abilityPower { get; set; } }


class Test
{
        public static void Main()
        {
                var abyssalScepter = new Scepter();
                var aegisOfTheLegion = new Aegis();
                var itemsList = new List<IAbilityPower>();

                itemsList.Add(abyssalScepter);
                itemsList.Add(aegisOfTheLegion);

                var power = itemsList[0].abilityPower;
        }
}
1 голос
/ 20 июля 2011

1001 * попробовать *

var itemInBuildAbilityPower = itemsArrayList[0].GetType().GetProperty ("abilityPower").GetGetMethod().Invoke (itemsArrayList[0], null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...