给定以下配置Autofac的方法:
public class DefaultConfigurationModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterApiControllers(System.Reflection.Assembly.GetExecutingAssembly());
}
}
并给出以下Web-Api控制器:
public class MyController : ApiController
{
private readonly int _someValue;
public MyController(int someValue)
{
_someValue = someValue;
}
}
传递someValue给MyController的构造函数最简单的方法是什么?
我可以创建一个MyControllerConfig类并在AutoFac中注册它:
public interface IMyControllerConfig
{
int SomeValue { get; }
}
public class MyControllerConfig : IMyControllerConfig
{
public int SomeValue { get; set; }
public MyControllerConfig(int someValue)
{
SomeValue = someValue;
}
}
并将其添加到我的配置模块中:
builder.Register(c => new MyControllerConfig(123)).As<IMyControllerConfig>();
并更改MyApiController为接受IMyControllerConfig而不是int:
public class MyController : ApiController
{
private readonly int _someValue;
public MyController(IMyControllerConfig myControllerConfig)
{
_someValue = myControllerConfig.SomeValue;
}
}
所述IMyControllerConfig接口可以是矫枉过正; 我本来可以不用而只用了MyControllerConfig。但是无论哪种方式; 整个MyControllerConfig类似乎过分地将单个(原始)值传递给我的ApiController。当然,有一种更简单,更清洁,更整洁的方式吗?
白衣非少年
相关分类