Preciso bloquear singleton no ASP.NET Core?
Aqui está o meu código:
public class RouteSingleton
{
private IDictionary<string, string> _dealCatLinks;
private IDictionary<string, string> _sectionLinks;
private IDictionary<string, string> _categoryLinks;
private IDictionary<string, string> _materials;
private IDictionary<string, string> _vendors;
public RouteSingleton(IDealService dealService
, ICategoryService categoryService
, IVendorService vendorService)
{
this._dealCatLinks = dealService.GetDealCatLinks("PLV").Distinct().ToDictionary(x => x, x => x);
this._sectionLinks = categoryService.GetSectionLinks("PLV").Distinct().ToDictionary(x => x, x => x);
this._categoryLinks = categoryService.GetMainCategoryLinks("PLV")
.Where(x => !_sectionLinks.ContainsKey(x)).Distinct().ToDictionary(x => x, x => x);
this._vendors = _vendorService.GetVendorLinks("PFB").Distinct().ToDictionary(x => x, x => x);
}
public bool IsDealCategory(string slug)
{
return _dealCatLinks.ContainsKey(slug);
}
public bool IsSectionUrl(string slug)
{
return _sectionLinks.ContainsKey(slug);
}
public bool IsCategory(string slug)
{
return _categoryLinks.ContainsKey(slug);
}
public bool IsVendor(string slug)
{
return _vendors.ContainsKey(slug);
}
}
Aqui está como eu me registrostartup.cs
:
services.AddSingleton<RouteSingleton, RouteSingleton>();
E eu uso osingleton
noroute constraints
igual a:
routes.MapRoute("category", "{slug}", defaults: new { controller = "Category", action = "Index" }, constraints: new { slug = new CategoryConstraint(app.ApplicationServices.GetRequiredService<RouteSingleton>()) });
Eu me pergunto, eu precisolock threads
no meuRouteSingleton.cs
ou meu código funcionará bem sob muitos usuários no início do aplicativo?Se eu precisar bloquear, como você pode me sugerir?O que acontecerá se eu não fizer?