2010-10-26 62 views
3

除了重命名字段以赋给它一个值,如果其名称与方法相同,还有什么办法吗?方法/字段之间的歧义

在写这篇文章时,我只是想,也许可以使用反射。

反射的作品,但有没有更好的/不同的方式做到这一点?

FieldInfo fi = typeof(TheClass).GetField("TheClash"); 
fi.SetValue(TheClassObj, TheFieldValue);
+2

你能否提供具有相同名称的方法和字段的类的代码?正如答案中提到的:这不应该是可能的。 – 2010-10-26 17:02:15

回答

1

你可能想在BindingsFlags看近,哪些是可选的参数Type.GetField()。有一个用于GetField,另一个用于GetProperty。希望这可以帮助!

2

它是如何具有相同的名称?这应该(AFAIK)通常是可能的。如果问题是一个基类,也许:

base.fieldName = value; 

如果平均法VS 变量,则:

this.MethodName(); 

其他,我看问题的唯一方法是你有“foo”和“Foo”,并且正在调用VB等不区分大小写的语言。

0

当然,反射是通过名称访问字段或方法的方式。但你为什么要这样做?

你可以这样做:那么

public int Test{get;set;} 

编译器将生成引擎盖你下的变量。

1

为什么不投入TheClassObj来键入TheClass并以这种方式访问​​它的属性?

((TheClass)TheClassObj).TheField = "blah"; 
+0

由于该方法在TheClass中不起作用。 – Will 2010-10-26 17:44:31