using System.Collections.Generic;
public interface MyInterface
public class MyImpl : MyInterface
public string Id { get; }
public MyImpl(string id) => Id = id;
public MyInterface Obj { get; }
public User(string id, IEnumerable<KeyValuePair<string, MyInterface>> getObj)
=> Obj = getObj.First(kv => kv.Key == id).Value;
Container container = new();
container.RegisterInstance<MyInterface>(new MyImpl("A"), serviceKey: "A");
container.RegisterInstance<MyInterface>(new MyImpl("B"), serviceKey: "B");
container.Register<User>();
var user = container.Resolve<Func<string, User>>()("A");
Console.WriteLine(((MyImpl)user.Obj).Id);