如何在Simple Injector中注册具有参数的泛型类型 (最新的SimpleInjector版本v3);
我的界面是;
public interface IDbHelper<T> where T : class
{
void SetInformation(string title, string description);
}
我的班级实施;
public class JsonDbWrapper<T> : IDbHelper<T> where T : class
{
private readonly JsonDb<T> _jsonFile;
public JsonDbWrapper(string path, string filename, Encoding encoding)
{
_jsonFile = JsonDb<T>.GetInstance(path, filename, encoding);
}
public void SetInformation(string title, string description) { ... }
}
我试过跟随,当然是它抛出异常:
container.Register(typeof(IDbHelper<>), typeof(JsonDbWrapper<>));
例外是;
错误:System.ArgumentException:类型
JsonDbWrapper<T>
的构造函数包含String类型的参数'path',它不能用于构造函数注入。
我可以创建一个设置路径,文件名和编码的方法。但我想在构造函数中使用它们。我想学习使用Simple Injector的正确方法。
答案 0 :(得分:3)
如果要将每个助手注册到关联的db类(例如Person)
选项是向代表
注册container.Register<IDbHelper<Person>>(() => new JsonDbWrapper<Person>("path","filename",Encoding.UTF8));
var result = container.GetInstance<IDbHelper<Person>>();