Ninject 2.0 - ConventionMemberSelector的替代方案是什么

时间:2010-03-10 16:15:38

标签: ninject

我刚刚下载了Ninject的最新版本,并用单个Ninject.dll替换了我们现有的Ninject.Core和Ninject.Condidtions程序集(CF构建,如果这有所不同)。一切顺利,直到我到达:

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

实施了哪些:

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

我找不到任何关于替换它的内容的参考,并且我的绑定不仅起作用 - 不会注入View属性。

有人可以帮忙吗?

由于

1 个答案:

答案 0 :(得分: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 );
    }
}

此致

伊恩