如何配置StructureMap以使用通用存储库?

sim*_*eid 8 c# structuremap generics dependency-injection

我有一个接口IGenericRepository<TEntity> where TEntity : IEntity和一个实现GenericRepository<TEntity> where TEntity : Entity.

我正在尝试IGenericRepository<Section>使用StructureMap 将特定注入到类中:

    ObjectFactory.Initialize(x =>
        {
            x.For(typeof(IGenericRepository<>)).Use(typeof(GenericRepository<>));
        });
Run Code Online (Sandbox Code Playgroud)

但当我尝试使用时,ObjectFactory.GetInstance<IGenericRepository<Section>>();我得到:

StructureMap异常代码:202没有为PluginFamily System.Data.Common.DbConnection定义的默认实例

任何想法为什么这是或我做错了什么?

提前致谢,

西蒙

egl*_*ius 8

您在GenericRepository的构造函数中接收了一个DbConnection,它是一个抽象类,并且没有配置SM以了解应该使用哪个特定类.

即:

 ObjectFactory.Initialize(x =>
        {
            x.For(typeof(DbConnection)).Use(typeof(SqlConnection));
            x.For(typeof(IGenericRepository<>)).Use(typeof(GenericRepository<>));
        });
Run Code Online (Sandbox Code Playgroud)


And*_*ock 3

你的构造函数是做什么用的GenericRepository<>

它或其依赖项之一需要DbConnectionSM 无法创建的 a。