我知道.net程序集的元数据是以表格形式存储的,如ECMA-335中所述。有没有人开发出一种使用类似SQL的语言(或任何查询语言!)查询数据的方法?
我要这样做的原因是要询问有关代码库的问题,例如:
一种解决方案可能是从表中读取表,然后将它们加载到SQL数据库中,但是,如果以前没有人这样做,这似乎是很多工作。
答案 0 :(得分:1)
LINQ
效果很好。收集相关的元数据并不难:获取所有程序集,获取所有类型,获取所有成员。从那里,您可以使用LINQ
查询几乎所有内容。
看看这个例子:
var members = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(x => x.GetTypes())
.SelectMany(x => x.GetMembers())
.ToArray();
Console.WriteLine(members.Count(x => x.MemberType == MemberTypes.Method));