如何交出具体参数
How to hand over a specific parameter
假设我有以下类及其接口
public class MyService : IMyService
{
int _value;
public MyService (int value)
{
_value = value;
}
}
public class MyClass : IMyClass
{
IMyService _myService;
public MyClass(IMyService myService)
{
_myService = myService;
}
}
第 1 步:使用 autofac 在我的测试项目中设置构造函数:
public class Configuration : Autofac.Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<MyClass>().As<IMyClass>()
.InstancePerLifetimeScope();
builder.RegisterType<MyService>().As<IMyService>()
.InstancePerLifetimeScope();
}
}
第 2 步:设置测试
public class MyApplication
{
readonly int _value = 1234;
private MyClass _myClass;
public MyApplication(IMyClass myClass)
{
_myClass = myClass;
}
}
现在,如何注入配置器未知但“MyApplication”已知的参数“值”?
之前的想法是这样做
public class MyApplication
{
readonly int _value = 1234;
private MyClass _myClass;
public MyApplication()
{
_myService = new MyService(_value);
_myClass = new MyClass(_myService);
}
}
但现在我正在尝试使用依赖倒置和依赖注入来解决上述问题。
您必须在 autofac 配置中调用构造函数。
builder.Register((comCont, parameters) => new MyClass(123))
.As<IMyClass>()
.InstancePerLifetimeScope();
假设我有以下类及其接口
public class MyService : IMyService
{
int _value;
public MyService (int value)
{
_value = value;
}
}
public class MyClass : IMyClass
{
IMyService _myService;
public MyClass(IMyService myService)
{
_myService = myService;
}
}
第 1 步:使用 autofac 在我的测试项目中设置构造函数:
public class Configuration : Autofac.Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<MyClass>().As<IMyClass>()
.InstancePerLifetimeScope();
builder.RegisterType<MyService>().As<IMyService>()
.InstancePerLifetimeScope();
}
}
第 2 步:设置测试
public class MyApplication
{
readonly int _value = 1234;
private MyClass _myClass;
public MyApplication(IMyClass myClass)
{
_myClass = myClass;
}
}
现在,如何注入配置器未知但“MyApplication”已知的参数“值”?
之前的想法是这样做
public class MyApplication
{
readonly int _value = 1234;
private MyClass _myClass;
public MyApplication()
{
_myService = new MyService(_value);
_myClass = new MyClass(_myService);
}
}
但现在我正在尝试使用依赖倒置和依赖注入来解决上述问题。
您必须在 autofac 配置中调用构造函数。
builder.Register((comCont, parameters) => new MyClass(123))
.As<IMyClass>()
.InstancePerLifetimeScope();