2010-03-10 56 views
0

我剛剛下載了Ninject的最新版本,並用單一的Ninject.dll(如果這樣做會產生差異,CF構建)替換了我們現有的Ninject.Core和Ninject.Condidtions程序集。一切都順利,直到我到:Ninject 2.0 - 什麼是ConventionMemberSelector的替代

kernel.Components.Connect<IMemberSelector>(new MyMemberSelector()); 

這是實現:

public class MyMemberSelector : ConventionMemberSelector 
{ 
    protected override void DeclareHeuristics() 
    { 
     InjectProperties(When.Property.Name.StartsWith("View")); 
    } 
} 

我找不到什麼這已被替換和我綁定不只是工作的任何參考 - 視圖屬性不會被注入。

任何人都可以幫忙嗎?

感謝

回答

2

您可以實現自己的IInjectionHeuristic並將其添加爲內核組件。

var selector = kernel.Components.Get<ISelector>(); 
var heuristic = new PropertyMemberSelector(member => member.Name.StartsWith("View")); 
selector.InjectionHeuristics.Add(heuristic); 


public class PropertyMemberSelector 
    : NinjectComponent, IInjectionHeuristic 
{ 
    private readonly Func<MemberInfo, bool> _predicate; 

    public PropertyMemberSelector(Func<MemberInfo, bool> predicate) 
    { 
     _predicate = predicate; 
    } 

    public bool ShouldInject(MemberInfo member) 
    { 
     return member.MemberType == MemberTypes.Property && _predicate(member); 
    } 
} 

問候,

伊恩

+0

VNice。愚蠢的問題,哪裏是最好的地方找到信息所有這些新的好東西? (如果答案是這樣的最好方法是查看源代碼,請說出來 - 例如,它肯定是針對xUnit.net的,但對於1.0,dojo相當完整) – 2010-03-12 09:49:37

+0

我們正在開發新的dojo與Ninject github wiki並且我正在撰寫有關2.0中功能和擴展的博客文章 - 這裏有很多內容。 – 2010-03-12 18:30:48