2010-10-26 51 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