Index: InversionOfControl/Castle.MicroKernel.Tests/MicroKernelTestCase.cs
===================================================================
--- InversionOfControl/Castle.MicroKernel.Tests/MicroKernelTestCase.cs	(revision 5393)
+++ InversionOfControl/Castle.MicroKernel.Tests/MicroKernelTestCase.cs	(working copy)
@@ -171,6 +171,15 @@
 		}
 
 		[Test]
+		public void ResolveAllReturnsOnlyComponentsRegisteredAsT()
+		{
+			kernel.AddComponent("test", typeof(CommonImpl2), typeof(CommonImpl2));
+			kernel.AddComponent("test2", typeof(ICommon), typeof(CommonImpl1));
+			ICommon[] services = kernel.ResolveAll<ICommon>();
+			Assert.AreEqual(1, services.Length);
+		}
+
+		[Test]
 		public void ResolveAllWaitingOnDependencies()
 		{
 			kernel.AddComponent("test", typeof(ICommon), typeof(CommonImplWithDependancy));
Index: InversionOfControl/Castle.MicroKernel/DefaultKernel.cs
===================================================================
--- InversionOfControl/Castle.MicroKernel/DefaultKernel.cs	(revision 5393)
+++ InversionOfControl/Castle.MicroKernel/DefaultKernel.cs	(working copy)
@@ -778,10 +778,10 @@
 		public Array ResolveAll(Type service, IDictionary arguments)
 		{
 			ArrayList list = new ArrayList();
-			IHandler[] handlers = GetAssignableHandlers(service);
+			IHandler[] handlers = GetHandlers(service);
 			foreach (IHandler handler in handlers)
 			{
-				if (handler is ForwardingHandler || handler.CurrentState != HandlerState.Valid)
+				if (handler.CurrentState != HandlerState.Valid)
 					continue;
 
 				object component = ResolveComponent(handler, service, arguments);
