Новое в структуре карты - получение кода исключения StructureMap: 202 Не определен экземпляр по умолчанию для PluginFamily - PullRequest
0 голосов
/ 02 января 2011

Я пробую структуру структуры в первый раз и получаю следующую ошибку компилятора,

StructureMap Exception Code:  202
No Default Instance defined for PluginFamily Super.SuperCore.Core.DataAccess.IPersonRepository, Super.SuperCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

Место, где я вызываю интерфейс:

        private IPersonRepository _iPersonRepository;

        public void Init() {
            _iPersonRepository = ObjectFactory.GetInstance<IPersonRepository>();
        }

Моя декларация интерфейса:

[PluginFamily("Default")]
    public interface IPersonRepository
    {
        List<string> getAllNames();
    }

Мой StructureMap.config:

<?xml version="1.0" encoding="utf-8" ?>
<StructureMap>
<Assembly Name="Super.SuperWeb" />
<Assembly Name="Super.SuperCore" />
</StructureMap>

Может кто-нибудь указать, где именно я иду не так.

1 Ответ

1 голос
/ 02 января 2011

Во-первых, это не ошибка компилятора, это исключение, разница очень большая, я не буду вдаваться в подробности.

В вашей конфигурации вы, кажется, смешиваете и сопоставляете методы конфигурации. Я обычно выбираю один и придерживаюсь его. Вот документация

Если вы хотите пойти по пути атрибутов, вы должны указать SM сканировать классы с атрибутами

Если вы хотите пойти по пути xml, убедитесь, что ваш файлmap.config копируется в папку с exe-файлом. Я не думаю, что вам нужно, но вы можете явно загрузить из конфигурации XML, как это

ObjectFactory.Initialize(x =>
            {
                x.AddConfigurationFromXmlFile("StructureMap.config");
            });

Если вам нужно что-то строго типизированное и проверенное компилятором, попробуйте реестр dsl, это более современный механизм конфигурации.

...