У меня проблемы с решением общих интерфейсов/классов с использованием Windsor Castle 2.5. У меня есть следующие классы и интерфейсы:Решающие дженерики с замком Виндзор
public interface IGenericDao<T> : IDao
public abstract class GenericDao<T> : IGenericDao<T> where T:class, new()
public class LocationDao : GenericDao<Location>, ILocationDao
Для регистрации я использую следующие строки кода
c.Register(
Component.For(typeof(IGenericDao<>))
.ImplementedBy(typeof(GenericDao<>)));
c.Register(Component.For<ILocationDao>().ImplementedBy<LocationDao>());
Теперь, когда я пытаюсь решить ILocationDao
var i = c.Resolve<ILocationDao>();
возвращаемое значение - Castle.Proxies.ILocationDaoProxy
, и я не могу отличить его от LocationDao
.
Когда я удалить GenericDao<Location>
из класса `LocationDao»
public class LocationDao : ILocationDao
все работает отлично. Поэтому я предполагаю, что я делаю что-то неправильно с регистрацией.
Не могли бы Вы помочь мне?
@weston Это реализация [GenericDao.cs] (http://pastebin.com/ZTnCfaMM), и вот ее реализация [LocationDao.cs] (http://pastebin.com/BcsC1ePR). –
@weston, если 'LocationDao' не будет реализовывать все« абстрактные »методы, он не сможет скомпилировать. – svick
@svick Да, извините, вы правы, игнорируйте мой комментарий Christian – weston