Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public interface ICacheService
- {
- public void SetSomething(object something);
- public object GetSomething();
- }
- public class CacheService : ICacheService
- {
- private object _something;
- public void SetSomething(object something) => _something = something;
- public object GetSomething() => _something;
- }
- public class Service()
- {
- private ICacheService _serviceCache;
- public Service(ICacheService cache)
- {
- _serviceCache = cache;
- }
- public void DoSomething(object something)
- {
- //stuff
- _cacheService.SetSomething(something);
- //other stuff
- }
- public object ReturnSomething()
- {
- return _cacheService.GetSomething();
- }
- }
- public class Program{
- private ICacheService _cacheService;
- private Service _service;
- public static int Main(string[] args)
- {
- // inizializzo un service provider ecc...
- IServiceProvider provider = /*serviceProvider*/ ;
- _cacheService = new CacheService();
- RegisterServices(provider);
- DoingSomethingWithServices(provider);
- return 0;
- }
- private void RegisterServices(IServiceProvider provider)
- {
- provider.Services.AddSingleton<ICacheService>(_cacheService);
- provider.Services.AddTransient<Service>();
- }
- private void DoingSomethingWithServices(IServiceProvider provider)
- {
- Service serviceInstance1 = provider.GetService<Service>();
- Service serviceInstance2 = provider.GetService<Service>();
- Service serviceInstance3 = provider.GetService<Service>();
- object something = 1;
- serviceInstance1.DoSomething(something);
- object something = 2;
- serviceInstance2.DoSomething(something);
- object something = 3;
- serviceInstance1.DoSomething(something);
- List<object> somethings = new List<object>();
- somethings.Add(serviceInstance1.ReturnSomething())
- somethings.Add(serviceInstance2.ReturnSomething())
- somethings.Add(serviceInstance3.ReturnSomething())
- // what's inside somethings? 3,3,3 ? or 1,2,3?
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment