Ninject 2.0 - что является альтернативой ConventionMemberSelector - PullRequest
0 голосов
/ 10 марта 2010

Я только что скачал последнюю версию Ninject и заменил наши существующие сборки Ninject.Core и Ninject.Condidtions одним Ninject.dll (сборка CF, если это имеет значение). Все прошло гладко, пока я не доберусь до:

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

Что реализовано:

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

Я не могу найти ссылку на то, чем это было заменено, и мои привязки не просто работают - свойства View не вводятся.

Может кто-нибудь помочь?

Спасибо

1 Ответ

2 голосов
/ 11 марта 2010

Вы можете реализовать свой собственный 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 );
    }
}

С уважением,

Ian

...