Если сторонние расширения позволяются, то C5 и Microsoft CCR (см. это сообщение в блоге для краткого введения), должен - знают.
.Net's дополнений C5, несколько испытывающий недостаток в библиотеке наборов (не Набор???), и CCR делает параллельное программирование легче (я слышу, что это должно быть объединенным с Параллельными Расширениями).
Я бы выбрал что-то вроде
// in IToaster.cs
public interface IToaster<T> {}
// in your StructureMap registry
Scan(x =>
{
x.Assembly("MVCDemo");
x.Assembly("MVCDemo.Infrastructure");
x.Assembly("MVCDemo.Services");
x.AddAllTypesOf(typeof(IToaster<>))
});
Ключевым моментом здесь является то, что этот подход использует неуниверсальную перегрузку AddAllTypesOf (). В противном случае это действительно становится липким виджетом.
См. Эту ветку SO для хорошего обсуждения этих проблем: StructureMap Авторегистрация для общих типов с использованием Scan
Это должно помочь, если только в вашем подходе нет чего-то. m отсутствует - не стесняйтесь обновлять, если это так.