继我之前发布的关于如何在结构映射中实现 IContainer 的帖子之后,我遇到了我希望这是我一段时间以来的最后一个问题。
如何将其他(非结构映射注入)对象传递给构造函数?
让我们从我用来测试这些东西的示例控制台应用程序中获取以下内容。
static void Main(string[] args)
{
_container = StructureMapConfig.GetContainer();
_userService = _container.GetInstance<IUserService>();
}
这会引发以下错误,因为我的构造函数具有 randomParam 并且 structuremap 不知道如何填补空白:
StructureMap.dll 中出现“StructureMap.StructureMapBuildPlanException”类型的未处理异常
附加信息:无法为具体类型 CommonServices.UserService 创建构建计划
构造函数:
public UserService(IUserRepository userRepository, IStringService stringService, string randomParam)
{
_userRepository = userRepository;
_stringService = stringService;
}
在我的注册表中,我像这样定义我的用户服务:
this.For<IUserService>().Use<UserService>();
我的问题是如何以最简单的方式做到这一点?
我找到了这个链接,但看不到如何使用这些建议,因为我必须让我的调用类知道 UserService 的依赖关系。如您所见,其中一些是数据层项目,我不想告诉我的 UI 层它们。
http://structuremap.github.io/resolving/passing-arguments-at-runtime/