c# - 获取给定类型的编程语言

标签 c# .net reflection

我有对某个程序集的类型和类的引用。

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/

相关文章:

c# - 如何在 C# 中创建 UDP 服务器?

c# - 使用 if 语句时,当前上下文中不存在该名称

C# 查找大于 DateTime.Now 的最近时间

.net - WIF Saml2SecurityTokenHandler 可以验证顶级签名吗?

c# - 评估来自字符串的嵌套属性调用

reflection - Kotlin 数据类 - 通过变量访问属性以设置其值

c# - ASP.NET Web 应用程序 session 问题

.net - windows 自动软件更新

c# - 上传大文件(1GB)-ASP.net

java - 在方法中重用时如何获取类的泛型类型 "T"