Autofac - 注册所有Windows窗体

时间:2011-06-22 21:20:33

标签: c# winforms autofac

有没有办法让Autofac自动注册我的程序集中的所有Windows窗体?此功能很可能类似于Autofac MVC支持注册所有控制器的能力?

现在,我这样做:

foreach (var type in Assembly.GetExecutingAssembly().GetTypesSafely().Where(type => type.IsSubclassOf(typeof(Form))))
    builder.RegisterType(type);

2 个答案:

答案 0 :(得分:6)

这是一个简短而又甜蜜的方式:

var assembly = Assembly.GetExecutingAssembly();
builder.RegisterAssemblyTypes(assembly)
    .AssignableTo<Form>();

答案 1 :(得分:4)

据我所知,没有内置方法来添加所有Win Forms。但你可以这样做。

var assembly = Assembly.GetExecutingAssembly();
builder.RegisterAssemblyTypes(assembly)
    .Where(type => type.IsSubclassOf(typeof(Form)));