有没有办法让Autofac自动注册我的程序集中的所有Windows窗体?此功能很可能类似于Autofac MVC支持注册所有控制器的能力?
现在,我这样做:
foreach (var type in Assembly.GetExecutingAssembly().GetTypesSafely().Where(type => type.IsSubclassOf(typeof(Form))))
builder.RegisterType(type);
答案 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)));