我有一个MVC项目,我使用结构图进行DI。我扫描所有类型产品的目录,并在结构图中注册这些,所以如果有人在该目录中添加了一些程序集,我需要该结构图重新扫描该目录并仅添加未注册的产品。
public static IContainer Initialize() {
ObjectFactory.Initialize(x => x.Scan(scan =>
{
scan.AssembliesFromPath(@"D:\Modules\");
scan.AssemblyContainingType(typeof (Product));
scan.AddAllTypesOf<Product>().NameBy(f=> f.Name);
scan.With(new ProductConvention());
}));
return ObjectFactory.Container;
}
public class ProductConvention : IRegistrationConvention
{
public void Process(Type type, Registry registry)
{
if (type.BaseType == null) return;
if (type.BaseType.Equals(typeof(Product)))
{
registry.AddType(typeof (Product), type);
}
}
}
我如何在structmap THX中做到这一点。
答案 0 :(得分:0)
您需要使用FileSystemWatcher查看添加新文件的时间,然后调用
ObjectFactory.Configure(x => x.Scan(...));
是的,您可以在Web服务器上使用FileSystemWatcher,除非您以中等信任方式运行。您需要知道何时添加文件,否则您不知道何时告诉StructureMap扫描新类型。