Structuremap重构了asp net mvc 3中的一些寄存器部分

时间:2011-03-12 17:18:13

标签: asp.net asp.net-mvc structuremap

我有一个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中做到这一点。

1 个答案:

答案 0 :(得分:0)

您需要使用FileSystemWatcher查看添加新文件的时间,然后调用

ObjectFactory.Configure(x => x.Scan(...));

是的,您可以在Web服务器上使用FileSystemWatcher,除非您以中等信任方式运行。您需要知道何时添加文件,否则您不知道何时告诉StructureMap扫描新类型。