Nhibernate OnCreationForAll方法在StructurMap注册表中如何工作?

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

我需要通过structur map注册接口的所有实现,问题是这些实例没有默认的ctor,我需要在创建n个实例时注入依赖项,但由于hibernate需要公共或受保护的默认ctor,我必须有一个受保护的默认ctor,如下所示:

 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);
      });