Сегодня я пытался настроить как можно более простое использование structureMap
версии 3.1.0.133 в консольном приложении Windows.
Мне не удается заставить метод WithDefaultConventions
работать должным образом. У меня есть класс Member
, реализующий интерфейс IMember
. StructureMap
регистрирует конкретный класс Member
, как и ожидалось, с использованием явного cfg.For<>..Use<>
, но мне должно быть что-то не хватает при настройке .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>();
}
Без .For <> эта строка приводит к ошибке
IMember member = ObjectFactory.GetInstance<IMember>();
Как я могу заставить StructureMap «видеть» вызывающую сборку и выполнять регистрацию на основе соглашения?
2 ответа
Попробуйте использовать AppDomain.CurrentDomain.GetAssemblies (), чтобы увидеть, что в настоящее время загруженные сборки содержат «MyApp».
Вы также можете попробовать это:
- Добавьте в решение проект библиотеки классов («Модели»)
- Переместите свои «IMember» и «Member» (и удалите из консольного проекта)
- Добавьте ссылку на «Модели» в свой консольный проект.
- Затем используйте
scan.Assembly("Models");
В вашей программе инициализации.
Это структура приложения, которая в любом случае может быть ближе к той, что вы бы использовали в производственной среде.
Надеюсь это поможет...
Кроме того, убедитесь, что вы не используете расширение в строке, ссылающейся на имя сборки.
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.