У меня есть два класса/контроллера, наследующие от BaseController
public class ProductController : BaseController
public class CategoryController : BaseController
Учитывая, что эти контроллеры предназначены для отдельных страниц, мне нужно отформатировать переданный объект (категория или продукт).
В классе List/IEnumerable я попытался добавить тип BaseController, но я не могу понять, как это сделать, поскольку приведенный ниже код либо выдает ошибки о том, что T не существует, либо существующие контроллеры ломаются, если я добавляю T как часть объявления класса T.
Вот BaseController<T> с методом выполнения этого
public class BaseController : SomeController
{
public List<string> GetDataRefresh(List<T> itemList) // <T> causes an error
{
foreach (var item in itemList)
{
}
}
}
Итак, я хотел бы передать что-то вроде списка продуктов или категорий, этот метод работает с переданными данными и возвращает список тех же данных в BaseController, будь то продукт, категория или любой другой тип.
Как я могу объявить T в этом случае?
Изменить 1
Как только вышеизложенное будет работать таким образом, в моем ProductsController я смогу сделать что-то вроде
private List<string> RefreshData()
{
return GetDataRefresh(_ctx.GetProducts()); // GetProducts is List<Product>
}
В Контроллере категорий это будет
private List<string> RefreshData()
{
return GetDataRefresh(_ctx.GetCategories()); // GetCategories is List<Category>
}
Я просто хочу манипулировать передаваемыми данными, т.е. «if (item.Property ==..... etc '
Но без ограничений у вас нет доступа к item.Property, потому что вы не знаете тип item во время компиляции. Это может быть даже проблема XY , и лучше отредактировать вопрос и попытаться точно объяснить, чего вы пытаетесь достичь, чтобы мы могли помочь вам с этим. Пожалуйста, убедитесь, что ваш код является минимально воспроизводимым примером.
Я поправил идею в уме. Это помогает? Спасибо





Кажется, вам нужно это:
public List<string> GetDataRefresh<T>(List<T> itemList)
{
foreach (var item in itemList)
{
}
}
Это сделало свое дело...
public List<string> GetDataRefresh<T>(List<T> itemList)? Однако неясно, что вам нужно делать сitemListили вам нужны какие-то ограничения дляT.