Получить элементы списка неизвестного типа через отражение [дублировать]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 к связующему списку во время компиляции.
Я попытался получить список таким:

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

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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