C# 如何使用Castle';什么是流畅的API?
我的项目中有一些类,它们位于某个通用名称空间的子名称空间中。例如:C# 如何使用Castle';什么是流畅的API?,c#,castle-windsor,C#,Castle Windsor,我的项目中有一些类,它们位于某个通用名称空间的子名称空间中。例如: 命名空间中的ClassFoo,ClassFoo1,ClassFoo2 MyProject.GeneralNamespace.NamespaceA ClassBar,ClassBar1,ClassBar2在命名空间MyProject.GeneralNamespace.NamespaceB中 要使用Castle Windsor fluent API注册所有这些类,我必须执行以下操作: Classes.FromThisAssemb
- 命名空间中的
,ClassFoo
,ClassFoo1
ClassFoo2
MyProject.GeneralNamespace.NamespaceA
,ClassBar
,ClassBar1
在命名空间ClassBar2
中MyProject.GeneralNamespace.NamespaceB
Classes.FromThisAssembly().InSameNamespaceAs<ClassFoo>().WithServiceDefaultInterfaces(),
Classes.FromThisAssembly().InSameNamespaceAs<ClassBar>().WithServiceDefaultInterfaces(),
Classes.FromThisAssembly().InSameNamespaceAs().WithServiceDefaultInterfaces(),
Classes.FromThisAssembly().InSameNamespaceAs().WithServiceDefaultInterfaces(),
拥有更多的名称空间会产生更多的代码
我想我有点不对劲。有没有一种方法可以用一条语句注册所有这些类?实际上,没有必要指定InSameNamespaceAs。要注册名称空间的子集,我们可以按名称空间的名称筛选程序集的类:
Classes.FromThisAssembly().
Where(c =>
c.Namespace != null && c.Namespace.Contains("MyProject.GeneralNamespace")
).WithServiceDefaultInterfaces());
当然,可能会有更复杂的过滤器。如果您只是尝试在“this”程序集中注册每个类型,则不需要指定
InSameNamespaceAs
。但是,如果您只选择要注册的名称空间的子集,我不知道还有更好的方法;您必须列出要在某处注册的名称空间。