Я создаю сайт интернет-магазина.Я хочу отобразить ProductCategory в виде боковой панели (категории короткого списка, например, Одежда, Электроника, Мебель, Книги и т. Д.).
В конце я хочу отправить переменную _cache productcategory всем контроллерам. Использует ли эта методологиякажется правильным?Кроме того, как мне удалить ненужный параметр memorycache в Home Controller?Сделать метод в Запланированном материале для его извлечения?
DI Решение:
public class HomeController : Controller
{
private readonly IMemoryCache _cache;
public IScheduledStuff _scheduledstuff;
public HomeController(IMemoryCache cache, IScheduledStuff scheduledstuff)
{
_cache = cache;
_scheduledstuff = scheduledstuff;
_scheduledstuff.ScheduleItemsExecute();
}
public IActionResult Index()
{
ViewBag.ProductCategoryList = _cache.Get<IEnumerable<ProductCategory>>("Teststore");
return View();
}
}
public class ProductCategoryRepository : IProductCategoryRepository<ProductCategory>
{
public IEnumerable<ProductCategory> GetAllProductCategory()
{
return _context.ProductCategory.ToList();
}
}
public ProductCategory()
{
public int ProductCategoryId { get; set; }
public string ProductCategoryName { get; set; }
public string ProductCategoryDescription { get; set; }
}
public class ScheduledStuff : IScheduledStuff
{
private readonly DatabaseContext _context;
IMemoryCache MemCache;
public IProductCategoryRepository<ProductCategory> productcategoryrepository;
public ScheduledStuff(DatabaseContext context, IMemoryCache memCache)
{
_context = context;
MemCache = memCache;
productcategoryrepository = new ProductCategoryRepository(_context);
}
public void ScheduleItemsExecute()
{
var testdata = productcategoryrepository.GetAllProductCategory();
MemCache.Set("Teststore", testdata);
}
}
public class Startup
{
public IProductCategoryRepository<ProductCategory> productcategoryrepository;
public IMemoryCache memorycache;
public void ConfigureServices(IServiceCollection services)
{
services.AddMemoryCache();
services.AddSingleton<ScheduledStuff>();
Ядро Asp.Net: Использовать кэш памяти вне контроллера
Решение Static: Продолжать получать сообщение об ошибке исключения Null, может кто-нибудь помочь исправить это?
public static class MemoryCacheStatic
{
public static IMemoryCache MemCacheStatic;
public static IProductCategoryRepository<ProductCategory> productcategoryrepositorystatic;
// Error on this line: <--- NullReferenceException: Object reference not set to an instance of an object.
public static IEnumerable<ProductCategory> ProductCategoryStatic = productcategoryrepositorystatic.GetAllProductCategory();
public static void SetValues()
{
ProductCategoryStatic = productcategoryrepositorystatic.GetAllProductCategory();
MemCacheStatic.Set("Teststore", ProductCategoryStatic) ;
}