Набор интерфейсов: < /p>
Код: Выделить всё
public interface IGetData
{
Task GetDataAsync(string condition);
}
public interface IGetDataA : IGetData
{
Task GetDataAsync(CriteriaA criteria);
}
public interface IGetDataB : IGetData
{
Task GetDataAsync(CriteriaB criteria);
}
< /code>
, а затем на странице (после создания компонентов): < /p>
public async Task RefreshAsync()
{
var itemsA = items.Where(x => x.Ref.Instance is IGetDataA)
.Select(x => x.Ref.Instance)
.Cast();
await Parallel.ForEachAsync(itemsA, async (item, token) =>
{
await item.GetDataAsync(criteriaA);
});
var itemsB = items.Where(x => x.Ref.Instance is IGetDataB)
.Select(x => x.Ref.Instance)
.Cast();
await Parallel.ForEachAsync(itemsB, async (item, token) =>
{
await item.GetDataAsync(criteriaB);
});
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... ugh-a-list