2010-09-13 62 views
0

Castle Windsor 2.5。這失敗了。爲什麼?它是指定的行爲還是錯誤?似乎在解析頂級服務時甚至不會查詢子依賴關係解析器。Castle Windsor + ISubDependencyResolver:奇怪的問題

class Program 
{ 
    class Resolver :ISubDependencyResolver 
    { 
    public object Resolve(CreationContext context, ISubDependencyResolver contextHandlerResolver, ComponentModel model, DependencyModel dependency) 
    { 
    return new Program(); 
    } 

    public bool CanResolve(CreationContext context, ISubDependencyResolver contextHandlerResolver, ComponentModel model, DependencyModel dependency) 
    { 
    return dependency.TargetType == typeof (Program); 
    } 
    } 

    [STAThread] 
    static void Main() 
    { 
    var container = new WindsorContainer(); 
    container.Kernel.Resolver.AddSubResolver(new Resolver()); 
    var xxx = container.Resolve<Program>(); 
    } 
} 

回答

2

這些子依賴解析器。他們解決依賴關係,而不是根服務。你真的想做什麼?爲什麼不預先註冊對象?

+0

問題實際解決(使用UsingFactoryMethod代替ISubDependencyResolver) 我有會話解析器在我的MVC控制器中注入NHibernate會話。但後來我想實現一個實用程序來將依賴關係(例如會話)注入到我的動作過濾器中。這需要直接解決,因爲我確實像在那裏的InjectProperties。 – 2010-09-13 19:01:23