Использование сканера сборки - отличный способ создать модель плагина.
public class StructuremapBootstrap
{
public IContainer Container { get; private set; }
public StructuremapBootstrap()
{
Container = new Container(x =>
{
//add registries here or do your config.
//extensibility
x.Scan(scan =>
{
//some plugin discriminator
scan.AssembliesFromApplicationBaseDirectory(a => a.FullName.Contains("Plugin"));
scan.LookForRegistries();
scan.AddAllTypesOf<IInitable>();
});
});
}
}
Вы в основном указываете StructureMap искать все сборки, имеющие определенный дискриминатор, я также использовал атрибут сборки маркера. Сканер LookForRegistries удобен, чтобы позволить вашим сборкам плагинов настраивать StructureMap по своему усмотрению. Наконец, у вас есть сканер, добавьте желаемый тип плагина.