52 lines
1.3 KiB
C#
52 lines
1.3 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.SignalR;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
builder.Services.AddKeyedSingleton<ICache, BigCache>("big");
|
|
builder.Services.AddKeyedSingleton<ICache, SmallCache>("small");
|
|
builder.Services.AddControllers();
|
|
|
|
var app = builder.Build();
|
|
|
|
app.MapGet("/big", ([FromKeyedServices("big")] ICache bigCache) => bigCache.Get("date"));
|
|
app.MapGet("/small", ([FromKeyedServices("small")] ICache smallCache) =>
|
|
smallCache.Get("date"));
|
|
|
|
app.MapControllers();
|
|
|
|
app.Run();
|
|
|
|
public interface ICache
|
|
{
|
|
object Get(string key);
|
|
}
|
|
public class BigCache : ICache
|
|
{
|
|
public object Get(string key) => $"Resolving {key} from big cache.";
|
|
}
|
|
|
|
public class SmallCache : ICache
|
|
{
|
|
public object Get(string key) => $"Resolving {key} from small cache.";
|
|
}
|
|
|
|
[ApiController]
|
|
[Route("/cache")]
|
|
public class CustomServicesApiController : Controller
|
|
{
|
|
[HttpGet("big-cache")]
|
|
public ActionResult<object> GetOk([FromKeyedServices("big")] ICache cache)
|
|
{
|
|
return cache.Get("data-mvc");
|
|
}
|
|
}
|
|
|
|
public class MyHub : Hub
|
|
{
|
|
public void Method([FromKeyedServices("small")] ICache cache)
|
|
{
|
|
Console.WriteLine(cache.Get("signalr"));
|
|
}
|
|
}
|