2009-12-17 63 views
0

大家好!我可以使用變量的值作爲c#中屬性的名稱嗎?

我希望能夠使用傳遞給過程的變量訪問類中的值。

例如_results.projection [2] .Current.FundDC成爲像

_results.projection [2] .termId.varName

其中termId可以是當前,未來或百分比

和的varName可以是一個大名單:)

有什麼建議嗎?明信片上的

答案請:)

回答

1

您可以使用Type.GetProperty獲得PropertyInfo然後PropertyInfo.GetValue得到價值體現這一點。

另外,你可以只打開傳遞給你的名字......說實話,兩者都有點噁心。以字符串形式接收這些信息的唯一方法是什麼?這裏的大圖是什麼?

+0

這裏的大圖是我正在測試包含在三個相當大的類中的應用程序返回的值。每個班級包含超過100個條目。我正在使用NUnit/NBehave編寫測試,基本上爲其他測試人員定義可重複使用的語法來指定他們的測試。 例如我希望能夠說,如果Funds中的值不是預期值,那麼測試就會失敗。我試圖用測試者可以說的方式來構造它,如果我有這麼多,並且這樣做,我希望有這個數量,但是如果我不這樣做,我就會陷入困境。 這有幫助嗎? – Ivor

+1

因此,這僅*用於測試目的,不適用於您的生產代碼?例如,我仍然不確定在字符串中傳遞屬性名稱是個好主意......它不是重構友好的。爲什麼測試代碼不能以正常方式使用該屬性? –

+0

噢,是的,我寧願使用字符串值,因爲我希望測試者能夠以儘可能清晰的語言指定測試。工作在應用程序上完成的原因是,編寫它的人是唯一理解它的人,它被混淆了所有的地獄和背部。因爲他已經不在我們身邊了,所以我們希望儘可能容易地將未來或至少到2012年...... – Ivor

0

查看C#4.0(帶有VS2010),DynamicObject以及更多的魔術...... read this blog post

+2

C#4仍然不會讓你直接訪問它。它允許您在執行時綁定編譯時的名稱,但它不提供僅在執行時已知的名稱。 DLR的確如此,但你必須做更多的工作。 –

相關問題