mirror of
https://github.com/AlexMacocian/Slim.git
synced 2026-07-15 15:19:59 +00:00
Method for IsRegistered to check if a service is already registered
This commit is contained in:
@@ -642,5 +642,31 @@ namespace Slim.Tests
|
||||
action.Should().Throw<Exception>();
|
||||
action2.Should().Throw<Exception>();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void IsRegisteredReturnsTrueForRegisteredService()
|
||||
{
|
||||
var di = new ServiceManager();
|
||||
di.RegisterSingleton<IIndependentService, IndependentService>();
|
||||
di.RegisterSingleton(typeof(IDependentService), typeof(DependentService));
|
||||
|
||||
var isRegistered1 = di.IsRegistered<IIndependentService>();
|
||||
var isRegistered2 = di.IsRegistered(typeof(IDependentService));
|
||||
|
||||
isRegistered1.Should().BeTrue();
|
||||
isRegistered2.Should().BeTrue();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void IsRegisteredReturnsFalseForNonRegisteredService()
|
||||
{
|
||||
var di = new ServiceManager();
|
||||
|
||||
var isRegistered1 = di.IsRegistered<IIndependentService>();
|
||||
var isRegistered2 = di.IsRegistered(typeof(IDependentService));
|
||||
|
||||
isRegistered1.Should().BeFalse();
|
||||
isRegistered2.Should().BeFalse();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,18 @@ namespace Slim
|
||||
/// </summary>
|
||||
public interface IServiceManager : IServiceProvider, IServiceProducer
|
||||
{
|
||||
/// <summary>
|
||||
/// Returns true if there exists a registration for <paramref name="tInterface"/>.
|
||||
/// </summary>
|
||||
/// <param name="tInterface">Type of registered service.</param>
|
||||
/// <returns>True if service <paramref name="tInterface"/> is registered. Otherwise returns false.</returns>
|
||||
public bool IsRegistered(Type tInterface);
|
||||
/// <summary>
|
||||
/// Returns true if there exists a registration for <typeparamref name="T"/>.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Type of registered service.</typeparam>
|
||||
/// <returns>True if service <typeparamref name="T"/> is registered. Otherwise returns false.</returns>
|
||||
public bool IsRegistered<T>();
|
||||
/// <summary>
|
||||
/// Returns all services that can be cast to provided type.
|
||||
/// </summary>
|
||||
|
||||
@@ -43,6 +43,24 @@ namespace Slim
|
||||
this.scoped = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if there exists a registration for <paramref name="tInterface"/>.
|
||||
/// </summary>
|
||||
/// <param name="tInterface">Type of registered service.</param>
|
||||
/// <returns>True if service <paramref name="tInterface"/> is registered. Otherwise returns false.</returns>
|
||||
public bool IsRegistered(Type tInterface)
|
||||
{
|
||||
return this.IsMapped(tInterface);
|
||||
}
|
||||
/// <summary>
|
||||
/// Returns true if there exists a registration for <typeparamref name="T"/>.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Type of registered service.</typeparam>
|
||||
/// <returns>True if service <typeparamref name="T"/> is registered. Otherwise returns false.</returns>
|
||||
public bool IsRegistered<T>()
|
||||
{
|
||||
return this.IsMapped(typeof(T));
|
||||
}
|
||||
/// <summary>
|
||||
/// Register a service into <see cref="ServiceManager"/> with <see cref="Lifetime.Transient"/>.
|
||||
/// </summary>
|
||||
@@ -565,6 +583,16 @@ namespace Slim
|
||||
}
|
||||
});
|
||||
}
|
||||
private bool IsMapped(Type tinterface)
|
||||
{
|
||||
return this.TryFunc(() =>
|
||||
{
|
||||
lock (this)
|
||||
{
|
||||
return this.InterfaceMapping.ContainsKey(tinterface);
|
||||
}
|
||||
});
|
||||
}
|
||||
private object GetObject(Type tInterface)
|
||||
{
|
||||
if (!this.InterfaceMapping.TryGetValue(tInterface, out var mappingTuple) &&
|
||||
|
||||
+3
-3
@@ -8,10 +8,10 @@
|
||||
<Company />
|
||||
<Product></Product>
|
||||
<Description>Service lifetime management and dependency injection framework.</Description>
|
||||
<AssemblyVersion>1.5.4</AssemblyVersion>
|
||||
<FileVersion>1.5.4</FileVersion>
|
||||
<AssemblyVersion>1.5.5</AssemblyVersion>
|
||||
<FileVersion>1.5.5</FileVersion>
|
||||
<PackageProjectUrl>https://github.com/AlexMacocian/Slim</PackageProjectUrl>
|
||||
<Version>1.5.4</Version>
|
||||
<Version>1.5.5</Version>
|
||||
<EnableNETAnalyzers>true</EnableNETAnalyzers>
|
||||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
|
||||
<PackageLicenseFile>LICENSE</PackageLicenseFile>
|
||||
|
||||
@@ -39,6 +39,20 @@
|
||||
Interface for <see cref="T:Slim.ServiceManager"/>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Slim.IServiceManager.IsRegistered(System.Type)">
|
||||
<summary>
|
||||
Returns true if there exists a registration for <paramref name="tInterface"/>.
|
||||
</summary>
|
||||
<param name="tInterface">Type of registered service.</param>
|
||||
<returns>True if service <paramref name="tInterface"/> is registered. Otherwise returns false.</returns>
|
||||
</member>
|
||||
<member name="M:Slim.IServiceManager.IsRegistered``1">
|
||||
<summary>
|
||||
Returns true if there exists a registration for <typeparamref name="T"/>.
|
||||
</summary>
|
||||
<typeparam name="T">Type of registered service.</typeparam>
|
||||
<returns>True if service <typeparamref name="T"/> is registered. Otherwise returns false.</returns>
|
||||
</member>
|
||||
<member name="M:Slim.IServiceManager.GetServicesOfType``1">
|
||||
<summary>
|
||||
Returns all services that can be cast to provided type.
|
||||
@@ -367,6 +381,20 @@
|
||||
Creates an instance of <see cref="T:Slim.IServiceManager"/>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Slim.ServiceManager.IsRegistered(System.Type)">
|
||||
<summary>
|
||||
Returns true if there exists a registration for <paramref name="tInterface"/>.
|
||||
</summary>
|
||||
<param name="tInterface">Type of registered service.</param>
|
||||
<returns>True if service <paramref name="tInterface"/> is registered. Otherwise returns false.</returns>
|
||||
</member>
|
||||
<member name="M:Slim.ServiceManager.IsRegistered``1">
|
||||
<summary>
|
||||
Returns true if there exists a registration for <typeparamref name="T"/>.
|
||||
</summary>
|
||||
<typeparam name="T">Type of registered service.</typeparam>
|
||||
<returns>True if service <typeparamref name="T"/> is registered. Otherwise returns false.</returns>
|
||||
</member>
|
||||
<member name="M:Slim.ServiceManager.RegisterTransient``2">
|
||||
<summary>
|
||||
Register a service into <see cref="T:Slim.ServiceManager"/> with <see cref="F:Slim.Lifetime.Transient"/>.
|
||||
|
||||
Reference in New Issue
Block a user