Castle.Windsor: тип разрешения с пустым защищенным конструктором - PullRequest
0 голосов
/ 19 октября 2010

Я использую NHibernate + Castle.Windsor, чтобы добавить немного поведения в мои сущности. Это означает, что NHibernate создает сущности через Виндзор. Это означает, что у меня должен быть пустой конструктор по умолчанию, чтобы Виндзор мог создавать экземпляры моих сущностей. Мне это не нравится по многим причинам, главная из которых заключается в том, что мне не нравится, когда объекты находятся в нестабильном состоянии.

Можно ли как-то создать экземпляр сущности без открытого конструктора без параметров?

Дополнительная информация: я пытался использовать собственный активатор для своих сущностей, но он не работает, так как Windsor выдает исключение, когда обнаруживает, что нет способа разрешить зависимости, поэтому он срабатывает перед использованием моего активатора.

Некий код:

public class Product
{
    public string Name { get; set; }
    public Product(string name)
    {
        Name = name;
    }
    protected Product() { }
}

Предположим, у меня есть вышеуказанная сущность: если я пытаюсь разрешить эту сущность через Windsor, она выдает исключение, сообщающее, что Product ожидает некоторые зависимости, которые не были зарегистрированы. Если я использую только NHibernate, все работает правильно. Итак, в основном я пытаюсь эмулировать поведение NHibernate в этом сценарии при разрешении своих сущностей через Виндзор.

Заранее спасибо,

Хорхе Варгас.

1 Ответ

1 голос
/ 19 октября 2010

Вам не нужно иметь конструкторы без параметров в ваших сущностях NHibernate или писать собственные активаторы Windsor.См. эту статью .

...