作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试创建一个单元测试,以确保我的所有业务类(我称它们为命令和查询类)都可以使用 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 查询中的名称进行硬编码的情况下过滤掉这些类型?
最佳答案
我会检查 System.Runtime.CompilerServices.CompilerGeneratedAttribute 的每个类型放在这些上面。
您可以使用 Type.IsDefined ,所以代码看起来像这样:
foreach (Type type in classTypes)
{
if (type.IsDefined (typeof (CompilerGeneratedAttribute), false))
continue;
// use type...
}
关于c# - 通过反射遍历类型时如何过滤掉 <>c_DisplayClass 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6513648/
我正在编写一个快速的 preg_replace 来从 CSS 中删除注释。 CSS 注释通常有这样的语法: /* Development Classes*/ /* Un-comment me for
使用 MySQL,我有三个表: 项目: ID name 1 "birthday party" 2 "soccer match" 3 "wine tasting evening" 4
我是一名优秀的程序员,十分优秀!