今天,我一直在尝试在Windows控制台应用程序中设置structureMap
3.1.0.133版本的最简单用法。
我很难让WithDefaultConventions
方法像我认为的那样工作。我有一个实现IMember
接口的Member
类。StructureMap
使用显式cfg.For<>..Use<>
按预期注册Member
具体类,但在设置.WithDefaultConventions
时,我一定遗漏了一些内容。
private void Init()
{
ObjectFactory.Initialize(cfg =>
{
cfg.Scan(scan =>
{
//scan.AssembliesFromApplicationBaseDirectory();
scan.TheCallingAssembly();
// named assembly not found ?
//scan.Assembly("myApp");
scan.WithDefaultConventions();
});
//cfg.For<IMember>().Use<Member>();
}
没有。对于<>,这条线导致错误
IMember member = ObjectFactory.GetInstance<IMember>();
如何让StructureMap"查看"调用程序集并执行基于约定的注册?
尝试使用AppDomain.CurrentDomain.GetAssemblies()查看当前加载的程序集是否包含"MyApp"
你也可以试试这个:
- 将类库项目添加到解决方案中("模型")
- 移动您的"IMember"one_answers"Member"(并从控制台项目中删除)
- 在控制台项目中添加对"Models"的引用
- 然后使用
scan.Assembly("Models");
在初始化例程中。
这是一个应用程序结构,可能更接近于您在生产中使用的结构。
希望这能帮助。。。
此外,请确保在引用程序集名称的字符串中不使用扩展名