У меня есть собственный класс списков List<T>
, из которого я позже создаю несколько списков объектов List<TypeA> MyList1, MyList2,...
, List<TypeB> MyList3,...
, которые не создаются во время компиляции. Во время выполнения я использую отражение, чтобы создать экземпляры этих списков, получить их имя и сохранить его в свойстве (почему, сейчас это не имеет значения, и я показываю только соответствующий код):
List<FieldInfo> ListOfFields = new List<FieldInfo>();
foreach (FieldInfo field in this.GetType().GetFields())
{
ListOfFields.Add(field); // saves all my List<T> in the ListOfFields list
}
Эта процедура является обязательным из-за нескольких программных ограничений. Отражая с помощью поля FieldInfo
, я могу получить это поле определенного типа List<T>
, но мне нужно перебрать их элементы, чтобы проверить, принадлежит ли данный <T> obj
(неизвестный) тому или иному списку. Каждый field
из foreach
l oop будет одного и того же типа List<T>
.
Я пытаюсь найти способ пропустить <T> obj>
и l oop через каждый field
(List<T>
) пока не найду совпадение obj == field[i]
, что-то вроде, например:
public Tuple<string, string> GetElementTupleFor<T>(T obj)
{
foreach(FieldInfo field in ListOfFields)
{
var elements = field.MyRequestForA_GetElements_Method(); // does such method exist?
for(int i=0; i<elements.Count; i++)
{
if (obj == elements[i])
{
return new Tuple<string, string>(field.Name, ""+i);
}
}
}
return new Tuple<string, string>("NotFound", "?");
}
Заранее спасибо за любую помощь!