Мне нужно зарегистрировать все реализации интерфейса через карту структур, у меня проблема в том, что у этих экземпляров нет ctor по умолчанию, мне нужно внедрить зависимость, когда я хочу создать n экземпляр, но потому что hibernate нужен public илизащищенный 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>());
в методе ObjectFactory.Initialize
но когда я хочу получить propertyType.RuleObjects
// каждый объект правила является одним из реализации IPropertyRuleObject, TextColouriser будет иметь значение null
в чем проблема, и мне нужно зарегистрировать эту реализацию с помощью nae, поэтому у меня естьэта строка в методе initilaize тоже:
x.Scan(p =>
{
p.AddAllTypesOf<IPropertyRuleObject>().NameBy(c => c.Name);
});