У меня есть простой код, который демонстрирует мою проблему:к Приведение к базовому типу родового объекта от System.Object
private void InitializeOther()
{
List<Foo> list = new List<Foo>();
Casting(list);
}
//in the "real" case I have no knowledge of o, other than it could be a List<>
private void Casting(object o)
{
Type t = o.GetType();
while (t.BaseType != typeof(Object))
{
if (t.IsGenericType && typeof(List<>) == t.GetGenericTypeDefinition())
{
//now I know that o is of type List<>. How can I now access List<> members from o?
break;
}
t = t.BaseType;
}
}
Таким образом, я могу быть уверен, что объект О имеет (или производный) из List<T>
, но теперь я хотите иметь доступ к List<T>
членам на o, а это значит, что вы можете его отменить до List<Foo>
. В моем «реальном» случае я не знаю Foo.
Я уверен, что это можно сделать, и если вы знаете, как это сделать, я был бы очень благодарен, если бы вы могли поделиться своими знаниями со мной!
Хорошо, спасибо, вызов метода является то –