diff --git a/src/TinyIoC/TinyIoC.cs b/src/TinyIoC/TinyIoC.cs
index d6646e5..b52822f 100644
--- a/src/TinyIoC/TinyIoC.cs
+++ b/src/TinyIoC/TinyIoC.cs
@@ -3716,23 +3716,26 @@ private ObjectFactoryBase GetParentObjectFactory(TypeRegistration registration)
ObjectFactoryBase factory;
+ if (_Parent._RegisteredTypes.TryGetValue(registration, out factory))
+ {
+ return factory.GetFactoryForChildContainer(registration.Type, _Parent, this);
+ }
+
+#if RESOLVE_OPEN_GENERICS
+ // Attempt container resolution of open generic
if (registration.Type.IsGenericType())
{
- var openTypeRegistration = new TypeRegistration(registration.Type,
+ var openTypeRegistration = new TypeRegistration(registration.Type.GetGenericTypeDefinition(),
registration.Name);
if (_Parent._RegisteredTypes.TryGetValue(openTypeRegistration, out factory))
{
- return factory.GetFactoryForChildContainer(openTypeRegistration.Type, _Parent, this);
+ return factory.GetFactoryForChildContainer(registration.Type, _Parent, this);
}
return _Parent.GetParentObjectFactory(registration);
}
-
- if (_Parent._RegisteredTypes.TryGetValue(registration, out factory))
- {
- return factory.GetFactoryForChildContainer(registration.Type, _Parent, this);
- }
+#endif
return _Parent.GetParentObjectFactory(registration);
}
diff --git a/tests/TinyIoC.Tests/TinyIoC.Tests.csproj b/tests/TinyIoC.Tests/TinyIoC.Tests.csproj
index 98a64d4..a2cc581 100644
--- a/tests/TinyIoC.Tests/TinyIoC.Tests.csproj
+++ b/tests/TinyIoC.Tests/TinyIoC.Tests.csproj
@@ -16,7 +16,7 @@
- TRACE;MOQ
+ TRACE;MOQ;RESOLVE_OPEN_GENERICS
diff --git a/tests/TinyIoC.Tests/TinyIoCTests.cs b/tests/TinyIoC.Tests/TinyIoCTests.cs
index 2953df7..11b57fd 100644
--- a/tests/TinyIoC.Tests/TinyIoCTests.cs
+++ b/tests/TinyIoC.Tests/TinyIoCTests.cs
@@ -13,6 +13,15 @@
// FITNESS FOR A PARTICULAR PURPOSE.
//===============================================================================
+#region Preprocessor Directives
+
+// Skip open generics tests on platforms that don't support it
+#if PocketPC || NETFX_CORE
+#undef RESOLVE_OPEN_GENERICS
+#endif
+
+#endregion
+
using System;
using System.Collections.Generic;
using System.Linq;