Я пытаюсь получить определенный индексированный элемент по номеру из общего списка, и я получаю: Невозможно привести объект типа 'System.Collections.Generic.List 1[typename]' to type 'System.Collections.Generic.List
1 [System.Object]'. ошибки.
То, что я пытаюсь достичь - это цикл (вперед или назад) к определенному списку на основе унаследованного базового класса; вот так (или что-то подобное):
public class Fruit
{
public string Name {get;set;}
}
public class Apple : Fruit
{
public bool IsSour {get;set;}
}
public class Orange : Fruit
{
public bool Juicy {get;set;}
}
public List<Apple> Apples = new List<Apple>();
public List<Orange> Oranges = new List<Oranges>();
то, что я хотел бы, выглядит примерно так:
public string[] BuildList(object GenericListHere, bool Backwards)
{
for(int i=GenericListHere.Length-1;i>=0;i--)
{
string MyName = GenericListHere[i].Name;
Выше приведено несколько псевдокодов, но я бы хотел добавить список яблок или апельсинов, чтобы получить результат.
Я не знаю заранее, какой объект я получаю, поэтому я получаю Count / Length, как это (не psuedocoded), где TestObj это просто объект, который я получаю:
int iBound = -1;
try
{
System.Reflection.PropertyInfo oInfo = TestObj.GetType().GetProperty("Count");
iBound = (int)oInfo.GetValue(TestObj, null);
}
catch
{
А если iBound> = 0, это коллекция. Следующая часть .. Я несколько растерялся ...
if (iBound != -1)
{
int iLoopStart = (backwardsLoop ? iBound - 1 : 0);
int iLoopEnd = (backwardsLoop ? -1 : iBound);
int iLoopDifference = (backwardsLoop ? -1 : +1);
for (int iLoop = iLoopStart; iLoop != iLoopEnd; iLoop += iLoopDifference)
{
// THIS IS REALLY BAD CODED.. BUT I DONT GET IT
object VarCollection = TestObj;
object[] arInt = new object[1];
arInt.SetValue(iLoop, 0);
Type[] tArray = new Type[1];
tArray.SetValue(typeof(int), 0);
object oElem = ((System.Collections.Generic.List<object>)VarCollection)[iLoop];
Что мне действительно нравится, так это что-то вроде: VarCollection [iLoop], но, похоже, это не работает ..
Кто-нибудь сталкивался с подобными списками? ТИА!