如何读取arraylist中对象的属性

时间:2011-07-20 00:55:04

标签: c# arrays object properties arraylist

我在读取我放入arraylist的项目的属性时遇到了一些问题,我无法在任何地方找到答案。

ArrayList itemsArrayList = new ArrayList();

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

itemInBuildAbilityPower = itemsArrayList[0].abilityPower;

我需要能够读取数组中对象的属性,以便我可以在其他地方应用它们的值,但这让我无处可去。

3 个答案:

答案 0 :(得分:5)

您需要将对象强制转换为期望的类型(并希望它真的属于这种类型)。

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

更好的选择(如果基础设施代码是您的)使用通用容器,例如List<T>

List<Item> itemsArrayList = new List<Item>

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

itemInBuildAbilityPower = itemsArrayList[0].abilityPower;

答案 1 :(得分:1)

var itemInBuildAbilityPower = itemsArrayList[0].GetType().GetProperty ("abilityPower").GetGetMethod().Invoke (itemsArrayList[0], null);

答案 2 :(得分:1)

基于elder_george的回答,以下是abyssalScepteraegisOfTheLegion不完全相同类型时可以执行的操作示例:

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;
        }
}
相关问题