我可以将Autofac.IContainer.Resolve与类名一起用作字符串

时间:2016-08-25 09:05:53

标签: c#

我想使用AutoFac.IContainer

获取如下所示的类的实例
public void functionName(string classNameString)
{
var someVariable = ContainerManager.IContainer.Resolve<"classNameString">();
}

问题是我没有在这里输入,我将类名作为字符串参数。我尝试获取类型并在Resolve中使用它但它不起作用,得到错误&#34; t是一个变量并用作类型&#34;。

Type t = Type.GetType(className);
var someVariable = Autofac.IContainer.Resolve < t > ();

我不确定它是否可能。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您应将其注册为named instance。如果您没有任何类型信息,可以将其注册为对象:

builder.RegisterType<YourClass>().Named<object>(nameof(YourClass))

然后解决它你会做:

container.ResolveNamed<object>("classNameString");

如果您有类型信息,则首先不需要将其注册为名称:

Type type = Type.GetType(className);
var resolved = container.Resolve(type);