2015-01-13 17 views
0

У меня есть две абстрактные классы и интерфейс для моего Dao:Castle.Windsor регистрации для родовых типов с абстракцией

public abstract class DBEntity 

public abstract class GenericDao<T> : IDao<T> where T : DBEntity 

public interface IDao<T> where T : DBEntity 

Я пытаюсь решить IDao<ModelClass.Model> в конструкторе моей службы:

this.cvDao = IoC.Resolve<IDao<CV>>(); 

проблема здесь.

Я пытаюсь зарегистрировать IDao<> и я уже использовал некоторые методы, такие как:

container.Register(Component.For(typeof(IDao<>)) 
          .ImplementedBy(typeof(GenericDao<>)) 
          .LifestylePerWebRequest()); 

container.Register(AllTypes.FromAssemblyNamed("cvdb.Dao") 
          .BasedOn(typeof(IDao<>)) 
          .WithService.Base()); 

Но все эти методы вызывает то же исключение с тем же эффектом. Мое приложение имеет бесконечный цикл и StackOverFlowException. Когда я отлаживаю свой код, я видел, что не могу зарегистрировать IDao<>.

+0

Где происходит исключение/каков его столбец? Существует ли класс, основанный на «GenericDao»? Как выглядит его конструктор? –

+0

Патрик, во-первых, спасибо за вашу любезную помощь. Исключение происходит в IoC из-за перехода в бесконечный цикл между регистрацией IDao и проверкой, является ли контейнер нулевым. Из GenericDao не существует класса. Он создает классы MongoClient и MongoDatabase и MongoServer для использования в классе. – Ayberk

ответ

0

GenericDao - это абстрактный класс. Я должен был попытаться разрешить класс, который вытекает из него, или изменить его тип на не-абстрактный класс для создания экземпляра.

Смежные вопросы