public static IFactory Factory { get; set; }
public interface IFactory { T GetInstance<T>() where T: class; }
public class SimpleFactory: IFactory
private readonly Container _container;
public SimpleFactory(Container container) { this._container = container; }
public T GetInstance<T>() where T : class { return _container.GetInstance<T>(); }
public class Bar { public int Get() { return 1; } }
public static readonly int foo = Factory.GetInstance<Bar>().Get();
public static void Main()
var container = new Container();
var factory = new SimpleFactory(container);
container.RegisterInstance(Factory = factory);
container.Register<Bar>();
Console.WriteLine(Foo.foo);