У меня есть интерфейс, как так:Замок Виндзор: Регистрация по соглашению, открытые дженерики
public interface IGenericRepository<T>
У меня есть базовый класс, как так:
public abstract class GenericRepository<T> : IGenericRepository<T> where T : class
У меня есть класс, как так:
public class AGenericRepository<T> : GenericRepository<T> where T : class
Без согласия, я успешно зарегистрирован так:
container.Register(
Component.For(typeof(GenericRepository<>)).ImplementedBy(typeof(AGenericRepository<>))
);
Я могу успешно решить объект следующим образом:
var robot = container.Resolve<GenericRepository<Android>>();
Однако при попытке зарегистрировать по соглашению следующим образом:
container.Register(Classes.FromThisAssembly()
.BasedOn(typeof(GenericRepository<>))
.WithService.Base());
Я не могу решить, как я сделал выше. Что дает?
Почему у вас есть класс AInstance? Удалите этот класс и сообщите нам, если вы все еще можете решить проблему. –
Поскольку вы не можете разрешить компонент, который не имеет реализации. Но теперь понятно, к чему вы клоните. Я удалю этот ответ, если не могу его обогатить. – samy
Реализация класса AGenericRepository обеспечивает реализацию для любого закрытого типа, такого как AGenericRepository . Мой вопрос также включал одну-единственную регистрацию и разрешающий код, который работает. Я спрашиваю, есть ли способ зарегистрироваться по соглашению в этом сценарии. –