我刚刚下载了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属性。
有人可以帮忙吗?
由于
答案 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 );
}
}
此致
伊恩