【发布时间】:2012-08-07 13:23:34
【问题描述】:
我正在尝试创建一个单元测试,以确保我的所有业务类(我称之为命令和查询类)都可以使用 Windsor 解决。我有以下单元测试:
[TestMethod]
public void Windsor_Can_Resolve_All_Command_And_Query_Classes()
{
// Setup
Assembly asm = Assembly.GetAssembly(typeof(IUnitOfWork));
IList<Type> classTypes = asm.GetTypes()
.Where(x => x.Namespace.StartsWith("MyApp.DomainModel.Commands") || x.Namespace.StartsWith("MyApp.DomainModel.Queries"))
.Where(x => x.IsClass)
.ToList();
IWindsorContainer container = new WindsorContainer();
container.Kernel.ComponentModelBuilder.AddContributor(new SingletonLifestyleEqualizer());
container.Install(FromAssembly.Containing<HomeController>());
// Act
foreach (Type t in classTypes)
{
container.Resolve(t);
}
}
这会失败,但出现以下异常:
No component for supporting the service MyApp.DomainModel.Queries.Organizations.OrganizationByRegistrationTokenQuery+<>c__DisplayClass0 was found
我知道 <>c__DisplayClass0 类型是由于 Linq 正在编译,但是如何在不硬编码 Linq 查询中的名称的情况下过滤掉这些类型?
【问题讨论】:
标签: c# reflection