C# 在.NET中跨语言访问具有区分大小写名称的成员

C# 在.NET中跨语言访问具有区分大小写名称的成员,c#,.net,vb.net,C#,.net,Vb.net,我刚刚遇到了一个有趣的场景。我有一门C语言课: public class Test { public int A; public int a; } 由于C是区分大小写的,这将把两个变量A和A视为不同的。我想在我的VB代码中继承上面的类,它不区分大小写。VB代码将如何访问两个不同的变量A和A 非常感谢您的帮助。确保跨语言兼容性的公共语言规范CLS告诉您不要声明两个仅在大小写上不同的公共成员。这样的代码将不符合CLS 如果无法更改库的代码,可以使用反射API手动选择所需的字段: obj.G

我刚刚遇到了一个有趣的场景。我有一门C语言课:

public class Test
{
  public int A;
  public int a;
}
由于C是区分大小写的,这将把两个变量A和A视为不同的。我想在我的VB代码中继承上面的类,它不区分大小写。VB代码将如何访问两个不同的变量A和A


非常感谢您的帮助。

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

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

obj.GetType().GetField("a").GetValue(obj)
obj.GetType().GetField("A").GetValue(obj)

如果您希望代码在两种语言之间具有跨功能性,则需要遵循适用于两种语言的命名标准


我个人觉得两个公众成员名字相同,只是大小写不同,这很复杂

为此,您需要使用反射功能

我知道在什么地方,我会努力找到它

在上面的这个解决方案中,它是关于函数的,对于一个变量,我想


至少你现在两个都得到了:-

就像Mehrdad说的那样,声明两个公共成员是不符合CLS的,只是在不同的情况下不同 如果您希望VisualStudio帮助您编写可以从任何其他.NET语言使用的CLS投诉代码,只需编写

[assembly: System.CLSCompliant(true)]
在AssemblyInfo.cs文件中,如果您在写这一行后出错,visual studio将不会高兴:
编辑:或AssemblyInfo.vb如果您使用的是vb.NET,谢谢

实际上,C文件是AssemblyInfo.cs,vb文件是AssemblyInfo.vb,等等