我有天蓝色的工作角色,我有类型列表,我在运行时创建它。 我需要使用IoC(structuremap)来初始化构造函数params。 现在我有了这堂课:
public class BuildCompletedFormatter1
{
private readonly IBuildService _buildService;
private readonly IProjectService _projectService;
public BuildCompletedFormatter(IContainer container) : base(container)
{
_projectService = container.GetInstance<IProjectService>();
_buildService = container.GetInstance<IBuildService>();
}
}
我现在创建:
var type = instanse.GetType();
object instantiatedType = Activator.CreateInstance(type, container);
return instantiatedType;
但我需要使用零个或多个parama初始化构造函数。 我的格式化程序不需要了解IContaiiner
我想在构造函数中使用params:
public class BuildCompletedFormatter2
{
private readonly IBuildService _buildService;
private readonly IProjectService _projectService;
public BuildCompletedFormatter(IProjectService projectService, IBuildService buildService)
{
_projectService = projectService;
_buildService = buildService;
}
}
答案 0 :(得分:1)
如果您知道要使用StructureMap解析的类型,则应该能够轻松地创建它:
var container = new Container();
container.Configure(r => r.For<IProjectService>().Use<MyProjectService>());
container.Configure(r => r.For<IBuildService>().Use<MyBuildService>());
var fmt = container.GetInstance<BuildCompletedFormatter2>();
自从我上次查看StructureMap以来已经很长时间了,所以我对API的使用可能已经过时,但一般概念应该保持不变。