我在没有任何 IoC 容器的情况下为我的应用程序使用依赖注入模式。现在我决定使用一些 IoC 容器,因为我的 Composition Root 包含数千行代码,但我未能使其与积极使用方差的类一起工作。例如下面的界面
public interface IQuery<in TIn, out TOut>
{
IReadOnlyCollection<TOut> Get(TIn key);
}
和服务
public class FakeRepository : IQuery<object, string>
{
public IReadOnlyCollection<string> Get(object key)
{
return new[] { key.ToString() };
}
}
纯 DI 工作正常
IQuery<string, object> service = new FakeRepository();
但是 Autofac 和 DryIoc 都无法解决它。
service = autofacContainer.Resolve<IQuery<string, object>>(); // exception
service = dryIocContainer.Resolve<IQuery<string, object>>(); // exception
我需要一些额外的设置吗?是否有任何其他 IoC 容器支持这一点?我要求太多了吗?