I'm confused,

you said your problem is component is not being disposed, however your tests shows everrything works the way it's supposed to.

Krzysztof

On 27/11/2010 1:42 AM, Konstantin wrote:
Sorry undefined lyfestyleType is set at registration time and never
changes (guess castle uses default typa which is singleton for such
components)


Here is the issue reproducing test

namespace Castle.Tests
{
     [TestFixture]
     public class CastleTests{

         public class Dependency : IDisposable
         {
             public Dependency()
             {
                 Console.WriteLine("ctor: " + GetType().Name);
             }

             public void Dispose()
             {
                 IsDisposed = true;
                 Console.WriteLine("dispose: " + GetType().Name);
             }

             public bool IsDisposed { get; private set; }
         }


         public class Depender<T>
         {
             public T DependencyInstance { get; set; }

             public Depender(T d)
             {
                 DependencyInstance = d;
             }
         }

         public interface IDependerFactory
         {
             Depender<T>  CreateDepender<T>();
         }


         [Test]
         public void Test()
         {
             WindsorContainer container = new WindsorContainer();
             container.AddFacility<TypedFactoryFacility>();

             var assembly = Assembly.GetExecutingAssembly();
             container.Register(
                 //Registering generic type
                 AllTypes.FromAssembly(assembly).Where(o =>
o.Name.Contains("Depender")).
                     Configure(c =>  c.LifeStyle.Transient),
                 Component.For<Dependency>().LifeStyle.Singleton,
                 Component.For<IDependerFactory>().AsFactory()
                 );

             var factory = container.Resolve<IDependerFactory>();
             Depender<Dependency>  depender =
factory.CreateDepender<Dependency>();
             container.Dispose();

             Assert.IsTrue(depender.DependencyInstance.IsDisposed);
             Assert.AreEqual(0, container.Kernel.GraphNodes.Length);
         }
     }
}




On 26 ноя, 15:09, Konstantin<[email protected]>  wrote:
Unfortunately i failed to create a test reproducing the issue.
Another strage thing: LifestyleType of not cleaned up components in
GraphNodes  is changed from singleton to Undefined after container
dispose.

On 26 ноя, 01:31, Mauricio Scheffer<[email protected]>
wrote:







Can you submit a failing test reproducing the issue?
On Nov 25, 12:51 pm, Konstantin<[email protected]>  wrote:
I've noticed that not  all components implementing IDisposbale and
having singleton lifycycle are disposed on container.Dispose() call.
the _container.Kernel.GraphNodes property is also not empty after it.
Some componentModels that are left in GraphNodes (looks like none of
them is  disposed)  have Dependers that are not present on root level
of GraphNodes.
I"ve spent plenty of time investigating the problem and has no idea of
what else can i check. Please help!

--
You received this message because you are subscribed to the Google Groups "Castle 
Project Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en.

Reply via email to