对不起,如果问题不正确,我是大三学生。
我有以下代码:
Class1 c1 = new Class1(DateTime.Today,
"123",
0,
new Class2("01001", @"E:ATMSZRegBASEREG2019.GDB", DateTime.Now, true)
);
c1.Work();
如何使用Autofac进行制作?
在没有传递参数的情况下,我得到了这个:
var builder = new ContainerBuilder();
builder.RegisterType<Class2>().As<IClass2>();
var container = builder.Build();
var component = container.Resolve<Class1>();
component.Work();
您可以使用WithParameter
方法在注册期间提供参数。
builder.RegisterType<Class1>()
.As<IClass1>()
.WithParameter("date", DateTime.Today)
.WithParameter("i", "123")
.WithParameter(
new ResolvedParameter(
(pi, ctx) => pi.ParameterType == typeof(Class2) && pi.Name == "class2",
(pi, ctx) => ctx.Resolve<IClass2>()));
或使用 lambda 注册它们
builder.Register(ctx => new Class1(DateTime.Today, ..., ctx.Resolve<Class2>())
.As<IClass1>();