我有对某个程序集的类型和类的引用。
var type = typeof(SomeNamespace.SomeClass);
有没有办法获得关于使用什么编程语言编写这个类的元数据? C# 还是 VB 还是 F#?
所以结果我想要这样的东西
var programmingLanguage = getLanguage(type); // C#
更新:
我可以分析这个类使用了哪些程序集或命名空间吗?也许这可以作为寻找语言的线索?
UPD2:
到目前为止我可以使用这个(它只是 VB 检测的一个例子)
var referenced = type.Assembly.GetReferencedAssemblies()
.Where((r) => r.Name.Contains("VisualBasic"));
VB 添加了 Microsoft.VisualBasic。 F# 还添加了它自己的程序集,而 C++ 声明了很多我可以检测到的“自用”类型。所以这是“一种方式”。我知道这不容易出错。而且还会有一些假的情况。那么有什么更好的吗?
最佳答案
.NET 不进行这种区分,您也没有充分的理由这样做。
唯一的方法是分析所使用的类型和代码模式。例如,VB 项目通常引用一组与 C# 不同的程序集。
如果您需要为自己的程序集执行此操作,我建议创建一个自定义 Attribute
类并用它装饰您的程序集。
关于c# - 获取给定类型的编程语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18978129/