using System.Collections.Generic;
public string Id { get; }
public Service(string id) => Id = id;
IService Service { get; }
class ServiceUser : IServiceUser
public IService Service { get; }
public ServiceUser(IService service) => Service = service;
public ViewModel(IServiceUser serviceUser)
Console.WriteLine(serviceUser.Service.Id);
var container = new Container();
container.RegisterInstance<IService>(new Service("A"), serviceKey: "A");
container.RegisterInstance<IService>(new Service("B"), serviceKey: "B");
container.RegisterDelegate<KeyValuePair<string, IService>[], string, IService>(
(services, serviceKey) => Array.Find(services, s => s.Key == serviceKey).Value
container.Register<IServiceUser, ServiceUser>();
container.Register<ViewModel>();
var createVm = container.Resolve<Func<string, ViewModel>>();