Я пытаюсь зарегистрировать общий класс следующим образом:В Autofac можно зарегистрировать общий тип для не-общего интерфейса?
builder.RegisterGeneric(typeof(WindowContext<>))
.AsSelf()
.As<IWindowContext>()
.InstancePerLifetimeScope();
(WindowContext<T> : IWindowContext
)
выше регистрация вызывает ArgumentException
по сборке: службы «Inforbase.Presentation.IWindowContext» не является определение открытого типа.
Ожидаемое поведение заключается в том, что зависимость от WindowContext<T>
, ближайшая к корню композиции, определит экземпляр, разрешенный для любого IWindowContext
в пределах этой продолжительности жизни.
Я понимаю, что концепция немного странная, и имеет любопытный краевой случай, когда два класса в одном и том же пространстве времени запрашивают разные типы WindowContext<T>
. Как ошибка, так и перезапись допустимы в моем сценарии.
Возможно ли это с помощью Autofac?
Я все еще хотел бы знать, почему это невозможно, open-generic может использоваться как не-общая зависимость в другом экземпляре класса, а не только в корне композиции. – nietras