diff --git a/microDI/Container.cs b/microDI/Container.cs index 9ae0a52..1f7ab9e 100644 --- a/microDI/Container.cs +++ b/microDI/Container.cs @@ -63,6 +63,16 @@ public IReferencedObject RegisterAs( c => instanceCreatorFunc(c), typeof(TImplementation), lifeCycle)); } + public IReferencedObject Register(ILifeCyclePolicy lifeCycle) + { + RuntimeCheck.NotNull(lifeCycle, nameof(lifeCycle)); + + var registeringType = typeof(TClass); + + return _registryService.Register( + registeringType, new RegisteredObject(null, registeringType, lifeCycle)); + } + public IReferencedObject Register( Func instanceCreatorFunc, ILifeCyclePolicy lifeCycle) { @@ -82,7 +92,7 @@ public object Resolve(Type resolveType) public TInterface Resolve() { - return (TInterface)Resolve(typeof(TInterface)); + return (TInterface) Resolve(typeof(TInterface)); } public IReferencedObject GetReferencedType() @@ -90,4 +100,4 @@ public IReferencedObject GetReferencedType() return new ReferencedObject(_registryService.GetRegisteredObject(typeof(TClass)), _registryService); } } -} +} \ No newline at end of file diff --git a/microDI/IContainer.cs b/microDI/IContainer.cs index bcb65b0..1cc1959 100644 --- a/microDI/IContainer.cs +++ b/microDI/IContainer.cs @@ -42,7 +42,8 @@ public interface IContainer /// Life cycle of registered type. /// /// - [NotNull] IReferencedObject RegisterAs([NotNull] ILifeCyclePolicy lifeCycle) + [NotNull] IReferencedObject RegisterAs( + [NotNull] ILifeCyclePolicy lifeCycle) where TImplementation : TInterface; /// @@ -59,6 +60,16 @@ [NotNull] IReferencedObject RegisterAs( [NotNull] ILifeCyclePolicy lifeCycle) where TImplementation : TInterface; + /// + /// Register class and creator function to be used for instantiation with life + /// cycle. + /// + /// Type of class to be registered + /// Life cycle of registered type. + /// + /// + [NotNull] IReferencedObject Register([NotNull] ILifeCyclePolicy lifeCycle); + /// /// Register class and creator function to be used for instantiation with life /// cycle.