2009-12-17 62 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的确如此,但你必须做更多的工作。 –

相关问题