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

时间:2009-04-14 14:35:20

标签: c# .net vb.net

我刚刚遇到一个有趣的场景。我有一个C#课程:

public class Test
{
  public int A;
  public int a;
}

由于C#区分大小写,因此将两个变量Aa视为不同。我想在我的VB代码中继承上面的类,它不区分大小写。 VB代码将如何访问两个不同的变量Aa

感谢任何帮助。

4 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:5)

像Mehrdad所说的那样,声明两个公共成员不符合CLS,这两个公共成员只有在案件中不同 如果您希望visual studio帮助您编写可以从任何其他.NET语言使用的CLS投诉代码,请写下

[assembly: System.CLSCompliant(true)]

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

答案 2 :(得分:1)

为此您需要使用反射功能

我看到了某个地方,我会试着找到它

here is the link to how

在上面的解决方案中,它是关于函数,对于我认为this would would be ok

的变量

至少你现在都得到了: - )

答案 3 :(得分:0)

如果您希望代码在语言之间交叉使用,则需要遵循适用于这两种语言的命名标准。

我个人觉得有两个公共成员名称相同,大写不同非常复杂。