使用.NET中的语言访问具有区分大小写的名称的成员

tus*_*h1r 3 .net c# vb.net

我刚刚遇到了一个有趣的场景.我有一个C#课:

public class Test
{
  public int A;
  public int a;
}
Run Code Online (Sandbox Code Playgroud)

由于C#区分大小写,因此将对这两个变量进行处理A并将a其区分开来.我想在我的VB代码中继承上面的类,它不区分大小写.VB代码将如何访问两个不同的变量Aa

任何帮助表示赞赏.

Meh*_*ari 6

确保跨语言兼容性的公共语言规范(CLS)告诉您不要声明两个仅在大小写上不同的公共成员.这样的代码不符合CLS.

如果您无法更改库的代码,则可以使用反射API手动选择所需的字段:

obj.GetType().GetField("a").GetValue(obj)
obj.GetType().GetField("A").GetValue(obj)
Run Code Online (Sandbox Code Playgroud)


Ahm*_*aly 5

就像Mehrdad所说,声明两个公共成员不符合CLS

,如果你希望visual studio帮助你编写可以在任何其他.NET语言中使用的CLS投诉代码,那就写一下

[assembly: System.CLSCompliant(true)]
Run Code Online (Sandbox Code Playgroud)

在你的AssemblyInfo.cs文件中,如果你在写完这一行后做错了什么,visual studio就不会高兴了:)
编辑:或者汇编信息如果你使用的是VB.NET,感谢Lucas