Разместил это и в группе структурных карт. Мы только начали использовать Structuremap на прошлой неделе и действительно копаем его.
Я уверен, что упускаю что-то простое.
Я пытаюсь имитировать следующий код, используя SM на своей фабрике.
Я в порядке с наличием зависимости контейнера в фабричном классе.
консенсус в этой теме, казалось, что это было правильным
подход: http://www.codeplex.com/unity/Thread/View.aspx?ThreadId=29697.
Если есть лучший способ, я открыт для других способов
достигнув этого
В основном метод Create моей фабрики будет принимать значение enum (
может быть фактическим типом, но в любом случае это не то, что контролируется
контейнером) и должен вернуть правильный экземпляр. Обратите внимание, что
возвращаемые типы будут управляться SM. Я не хочу ставить все
зависимости в Ctor от завода, так как их может быть много (!).
public class PreSaveActionFactory : IPreSaveActionFactory
{
public IPreSaveAction Create(MyEnumType enumType)
{
IPreSaveAction action;
switch (enumType)
{
case MyEnumType.Value1:
//imagine this has 3 Ctor arguments
action = new Value1PreSaveAction();
break;
case MyEnumType.Value2:
//and imagine this has 4 completely different Ctor arguments
action = new Value2PreSaveAction();
break;
default:
throw new NotSupportedException();
}
return action;
}
}
Ссылка на правый раздел документации в порядке, вам не нужно
напишите код для меня (хотя я не буду жаловаться :)). Я бы хотел
знать, как выглядит фабрика, а также код реестра.