2010-03-10 5 views
0

방금 ​​Ninject의 최신 버전을 다운로드하고 기존 Ninject.Core 및 Ninject.Condidtions 어셈블리를 단일 Ninject.dll (CF가 차이를 만드는 경우)으로 대체했습니다. 구현되는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가 꽤 완성되었습니다) –

+0

우리는 새로운 dojo와 Ninject github 위키가 있고 2.0의 기능과 확장 기능에 관한 블로그 글을 쓰고 있습니다. –