Skip to content

Commit 5b60356

Browse files
committed
update to remove some junk interface handling that was causing multiple singletons to be created.
1 parent f670e6d commit 5b60356

File tree

2 files changed

+2
-32
lines changed

2 files changed

+2
-32
lines changed

SimpleInjection/Injection/Host.cs

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -63,16 +63,6 @@ private void RegisterAttributedTypes()
6363
{
6464
// Register the concrete type
6565
_serviceDescriptors.Add(new ServiceDescriptor(type, lifetime.Value));
66-
67-
// Register all non-system interfaces implemented by this type
68-
foreach (var iface in type.GetInterfaces())
69-
{
70-
if (iface.Namespace?.StartsWith("System") == false &&
71-
!_serviceDescriptors.Any(sd => sd.ServiceType == iface))
72-
{
73-
_serviceDescriptors.Add(new ServiceDescriptor(iface, lifetime.Value));
74-
}
75-
}
7666
}
7767
}
7868
}
@@ -178,27 +168,7 @@ private void CreateSingletonFactory(ServiceDescriptor descriptor)
178168
{
179169
if (!_singletonInstances.TryGetValue(serviceType, out var instance))
180170
{
181-
var typeToCreate = serviceType;
182-
if (serviceType.IsInterface)
183-
{
184-
// Find all concrete implementations for this interface
185-
var implementations = _serviceDescriptors
186-
.Where(sd => serviceType.IsAssignableFrom(sd.ServiceType) && !sd.ServiceType.IsInterface && !sd.ServiceType.IsAbstract)
187-
.ToList();
188-
if (implementations.Count == 1)
189-
{
190-
typeToCreate = implementations[0].ServiceType;
191-
}
192-
else if (implementations.Count > 1)
193-
{
194-
throw new InvalidOperationException($"Multiple implementations found for interface {serviceType.Name}. Please register only one or use a more specific type.");
195-
}
196-
else
197-
{
198-
throw new InvalidOperationException($"No implementation found for interface {serviceType.Name}.");
199-
}
200-
}
201-
instance = CreateInstance(typeToCreate, scope);
171+
instance = CreateInstance(serviceType, scope);
202172
_singletonInstances[serviceType] = instance;
203173
}
204174
return instance;

SimpleInjection/SimpleInjection.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
1010
<PackageId>SimpleInjection</PackageId>
11-
<Version>0.9.6.3</Version>
11+
<Version>0.9.6.5</Version>
1212
<Authors>Derek Gooding</Authors>
1313
<Company>Derek Gooding</Company>
1414
<Description>

0 commit comments

Comments
 (0)