What about casting an interface to another? Like: interface A{} interface B: A{} class C : B{} B Factory() { return new C(); } auto i = cast(A)Factory(); Could this work?