我想知道在c#中是否有某些東西能夠將一個類的成員傳遞給另一個將使用此成員來獲取值的函數。因此,只需在運行時獲取一個字段的值即可。像其他語言(PHP至少我認爲),你可以做作爲第一類對象的類成員
a.b = "something"
而且
a["b"] = "something";
編輯:其實不是那麼好一個例子,因爲使用字符串,對不起
爲了清楚想要什麼,我能夠做一個例子:
class A
{
int x;
int y;
}
void somethingsomething<T>(T class, SomeMagicFieldClass f)
{
dosomethingwith(somemethodthatgivesmethevalueoffield(class, f));
}
哪裏話,我可以調用滿足HOD這樣的:
A a = new A();
somethingsomething(a, A.x); //hypothetical notation
somethingsomething(a, A.y);
我現在也有類似的地方我做了什麼:
somethingsomething(a, "x");
somethingsomething(a, "y");
我然後去使用發現場內省API(也在努力的getProperty)
MemberInfo memberInfo = item.GetType().GetField(fieldName);
該作品但缺點是作爲字符串傳遞的字段不會在Visual Studio中「重構」字段名時得到更新,所以我想也許在c#中存在這樣的東西,會得到重構的自動在更改字段名稱時,這是否是一個問
非常感謝您閱讀本無聊的問題
幸運的是......不! :) – stefan 2011-03-10 16:39:14
你總是可以使用枚舉來指定方法名稱,那麼你只需要在一個地方替換它......'somethingsomething(a,MyAClassProperties.X)' – 2011-03-10 16:39:36