gpt4 book ai didi

c# - Activator.CreateInstance 和 Ninject

转载 作者:太空狗 更新时间:2023-10-30 00:54:56 25 4
gpt4 key购买 nike

我有一个正在进行的项目,我不知道在编译时需要实例化哪个类。我正在尝试使用 Activator.CreateInstance() 根据用户输入为我生成一个新类。下面的代码运行良好,但我必须将我的 INECCQuery 类上的构造函数更改为只有一个默认构造函数并且不使用任何类型的依赖注入(inject)。有没有办法让我仍然可以使用我的注入(inject)绑定(bind)和 Activator.CreatInstance()?我正在使用 Ninject 进行注入(inject)。

    [HttpGet]
public ActionResult Index(string item) {
Type t = Type.GetType(string.Format("Info.Audit.Query.{0}Query, Info.Audit", item.ToUpper()));
if (t != null) {
INECCQuery query = (INECCQuery)Activator.CreateInstance(t);
var results = query.Check();
return View("Index", results);
}
return View("Notfound");
}

最佳答案

在可能的情况下始终首选构造函数注入(inject),但合适的备份是利用属性注入(inject)。

http://ninject.codeplex.com/wikipage?title=Injection%20Patterns

class SomeController {

[Inject]
public Object InjectedProperty { get; set; }

}

基于您正在尝试替换 Activator.CreateInstance 的假设你可以注入(inject) Func<T, INECCQuery>或者你想使用的任何工厂。

关于c# - Activator.CreateInstance 和 Ninject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11111200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com