Nhibernate OnCreationForAll方法在StructurMap注册表中如何工作?
我需要通过structur map注册接口的所有实现,问题是这些实例没有默认的ctor,我需要在创建n个实例时注入依赖项,但由于hibernate需要公共或受保护的默认ctor,我必须有一个受保护的默认ctor,如下所示:Nhibernate OnCreationForAll方法在StructurMap注册表中如何工作?,nhibernate,structuremap,Nhibernate,Structuremap,我需要通过structur map注册接口的所有实现,问题是这些实例没有默认的ctor,我需要在创建n个实例时注入依赖项,但由于hibernate需要公共或受保护的默认ctor,我必须有一个受保护的默认ctor,如下所示: public class LengthRule : RuleBase { protected LengthRule() : base(null) { } public LengthRule(ITextColouriser t
public class LengthRule : RuleBase
{
protected LengthRule()
: base(null)
{
}
public LengthRule(ITextColouriser textColouriser)
: base(textColouriser)
{
}
}
public abstract class RuleBase : IPropertyRuleObject
{
public virtual ITextColouriser TextColouriser { get; set; }
public RuleBase(ITextColouriser textColouriser)
{
TextColouriser = textColouriser;
}
}
为了注册这个依赖项,我使用这行代码
x.For<IPropertyRuleObject>().OnCreationForAll((w,e)=>e.TextColouriser=w.GetInstance<ITextColouriser>());
我知道这是一个老帖子,但我今天也遇到了同样的问题 解决办法比我最初想象的要简单得多 只需创建一个ITextColouriser配线,它就会神奇地被注入:)
x.Scan(p =>
{
p.AddAllTypesOf<IPropertyRuleObject>().NameBy(c => c.Name);
});