我想将DI与MongoDB的存储库类和接口(interface)一起使用,但无法正常工作。我有这个错误:



类的构造函数:

    public MongoRepository(string connectionString, string collectionName)
    {
        this.collection = Util<TKey>.GetCollectionFromConnectionString<T>(connectionString, collectionName);
    }


    public MongoRepository(MongoUrl url, string collectionName)
    {
        this.collection = Util<TKey>.GetCollectionFromUrl<T>(url, collectionName);
    }

Unity Config:
container.RegisterType(typeof(MongoRepository.IRepository<>), typeof(MongoRepository.MongoRepository<>));

如何在Unity中配置DI?谢谢!!

最佳答案

解决方案很简单:在处理框架类型时不要使用 Autowiring ,如this article中所述。

而是为框架类型注册工厂委托(delegate)。但是,这不适用于您的情况,因为您要处理的是泛型类型,但是再次解决的方法很简单:创建派生类型并注册该类型:

public class MyMongoRepository<T> : MongoRepository<T>
{
    // of course you should fill in the real connection string here.
    public MyMongoRepository() : base("connectionString", "name") { }
}

container.RegisterType(typeof(IRepository<>), typeof(MyMongoRepository<>));

10-08 04:49