我在我的项目中使用 Ninject 作为 IoC 容器。我有以下课程:
public class SomeRepository:ISomeRepository
{
public SomeRepository(string someDatabaseConnectionString)
{
// some code here..
}
}
在我的应用程序设置文件中,我有一个名为“someDatabase”的连接字符串。默认情况下,应该添加以下配置,以便将此连接字符串注入构造函数:
kernel.Bind<ISomeRepository>()
.To<SomeRepository>()
.WithConstructorArgument("someDatabaseConnectionString", connString);
但我想实现这些字符串的基于常规的绑定。名称以“ConnectionString”结尾的字符串类型的所有构造函数参数的值应取自应用程序的 connectionStrings 配置部分并自动注入。我也想为 appSettings 部分实现类似的约定。这种方法在 Mark Seeman 的“Primitive Dependencies”文章(“原语约定”部分)中有更详细的描述。示例中使用了 Castle Windsor 容器。
是否可以使用 Ninject 实现这样的约定,最好的方法是什么?我已经尝试过 ninject.extensions.conventions 但似乎它没有这样的功能,是吗?