我有一个带有构造函数的类,该构造函数接受我需要在Autofac中注册的Func参数。
这是定义类的方式:
public class MyClass : IMyClass
{
private Func<Task<IProvider<string, object>>> _provider;
public MyClass(Func<Task<IProvider<string, object>>> provider)
{
_provider = provider;
}
...
}
我如何在Autofac上注册该课程?
我尝试了以下操作:
builder.RegisterType<MyClass>()
.As<IMyClass>()
.InstancePerLifetimeScope()
.WithParameter("provider", MyProviderFunc);
但这会导致以下编译错误:
cannot convert from 'method group' to 'object'
这是MyProviderFunc的定义:
private static Task<ICRUDProvider<string, object>> MyProviderFunc()
{
...
}
答案 0 :(得分:1)
您需要将方法组显式转换为委托类型(否则,编译器不知道您想要哪个委托):
.WithParameter("provider", new Func<Task<IProvider<string, object>>>(MyProviderFunc));