我最近开始尝试依赖注入和IoC。C#如何避免使用IoC解析器传递参数
这是困扰我的一个问题... 我有一个依赖解析器,基本上允许我做以下
injection.Register<IMyInterface, MySpecificType>();
这会自动解决的类型,只要东西在代码请求它并提供MySpecificType
作为IMyInterface
的实现。
这对ASP.NET中的控制器非常适用,例如,控制器构造函数没有参数并且也由框架动态调用。
但是如果我有我自己的自定义类(在本例中为MySpecificType
),并且我想要动态解决它,会发生什么情况。也就是说,只要代码中的某些内容需要IMyInterface
,解析器应通过MySpecificType
。
下面是一个例子:
injection.Register<IMyInterface, MySpecificType>();
public SomeClass(IMyInterface dependency)
{
//do something
}
然后在我的代码的地方我想创建的SomeClass
一个新的实例。
var instance = new SomeClass(//What do i pass here)
我应该在构造函数中传递什么。当然我可以做类似new MySpecificType()
的东西,但这会让我的自动依赖解析器毫无意义。我应该有一个单独的空构造函数并使用它,或者这是不可能发生的事情。
我会说,这取决于你使用IoC框架... –
如果一个类不能被解析为完整的对象图的一部分,这可能意味着你正试图将_runtime data_注入到它。您应该防止这样做:[不要使用运行时数据编写应用程序组件](https://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=99)。 – Steven