Since Castle.Windsor was updated to 3.0.0.4001 ServiceOverrides method
became obsolete. So I need help to rewrite my old code to new style
with using DependsOn method.

container.Register(AllTypes.FromAssemblyContaining(typeof(IRepository))
  .BasedOn<IRepository>()
  .If(Component.IsInSameNamespaceAs<BaseEntityRepository<BaseEntity>>())
  .If(t =>
      t.Name.EndsWith("Repository") &&
          (t.Name.StartsWith("Foo") || t.Name.StartsWith("Bar")))
  .Configure(c =>
 
c.ServiceOverrides(ServiceOverride.ForKey("Session").Eq("db.session.second"))
      
.ServiceOverrides(ServiceOverride.ForKey("SessionFactory").Eq("db.sessionfactory.second"))
  .LifeStyle.PerThread));
I tried to rewrote this code like this:

container.Register(Component.For<IRepository>().ImplementedBy<FooRepository>()
  .DependsOn(new Dictionary<string, string>
    {{"Session", "db.session.second"},
     {"SessionFactory", "db.sessionfactory.second"}})
  .LifeStyle.PerThread);

but got null when tried to Resolve FooRepository object. Also with
this approach I can't override services for several components (like
first approach with If using), so I need write individual Register
line for each component. All other code stay same and work fine.

-- 
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