我已经使用了另一个答案中的代码来查找使用特定自定义属性标记的程序集中的类:
var allClasses = tpAssy.GetTypes();
var testClasses = from t in tpAssy.GetTypes()
let attributes = t.GetCustomAttributes(typeof(TestClassAttribute), true)
where attributes != null && attributes.Length > 0
select new { Type = t, Attributes = attributes.Cast<TestClassAttribute>() };
但是,在我的测试用例程序集中,我可以看到 allClasses 列出了4个类,其中3个用我感兴趣的自定义属性(TestClassAttribute)标记但是第二个Linq查询分配给 testClasses 会返回一个空的枚举。
这是一个这样的类的代码标题:
[TestClass()]
public class BaseSessionTest
{...
这是带有.Net 4.5的VS2013。
是什么给出了?
答案 0 :(得分:0)
这是一个.Net框架问题。正在加载的程序集是使用Visual Studio 2008(.Net 3.5)编译的,而不运行的应用程序是Visual Studio 2013中的.Net 4.6。在后者中,反射显然不能完全与.net一起工作使用早期框架编译的程序集。这是一个错误还是你必须知道的秘密技巧?