Получить элементы списка неизвестного типа через отражение [дублировать] ⇐ C#

Место общения программистов C#
Anonymous
Получить элементы списка неизвестного типа через отражение [дублировать]

Сообщение Anonymous »

У меня есть типы, которые выглядят как следующие: < /p>

Код: Выделить всё

public class Test1
{
[SubTests]
List SubTests { get; set; } = [];

public void Run()
{
foreach(var subtest in SubTests)
{
// ...
}
}

public class SubTest1 : ISubTest { }
}
public class Test2
{
[SubTests]
List SubTests { get; set; } = [];

public void Run()
{
foreach(var subtest in SubTests)
{
// ...
}
}

public class SubTest2 : ISubTest { }
}

public interface ISubTest { }
Я хочу использовать отражение, чтобы добавить элементы test.subtests к связующему списку , но я не знаю типа iSubtest при компиляции.

Код: Выделить всё

foreach (var property in type.GetProperties())
{
if (property.GetCustomAttribute() != null)
{
var subTests = (IList)property.GetValue(valueSource);
return new BindingList(subTests)
}
}
Но это бросает invalidcastexception , потому что тип общего параметра для ilist отличается.
Есть ли способ сделать то, что я пытаюсь сделать?

Подробнее здесь: https://stackoverflow.com/questions/794 ... reflection

Вернуться в «C#»