using Jab; namespace ConsoleApp; public interface ITypeA { } public interface ITypeB { } public class MyClass : ITypeA, ITypeB { private static int _count; public MyClass() { Count = _count++; } public int Count { get; } } [ServiceProviderModule] [Singleton(typeof(ITypeA), Factory = nameof(TypeAFactory))] [Singleton(typeof(ITypeB), Factory = nameof(TypeBFactory))] [Singleton(typeof(MyClass))] public interface IModuleA : IServiceProvider { public static ITypeA TypeAFactory(IServiceProvider sp) => (ITypeA) sp.GetService(typeof(MyClass)); public static ITypeB TypeBFactory(IServiceProvider sp) => (ITypeB) sp.GetService(typeof(MyClass)); } [ServiceProvider] [Import(typeof(IModuleA))] public partial class Container : IModuleA { } internal class Program { private static void Main(string[] args) { var container = new Container(); var tA = container.GetService(); var tB = container.GetService(); var c = container.GetService(); Console.WriteLine($"IsSingleton: {tA.Equals(tB) && tB.Equals(c)}"); } }