获取静态字段的值
我有以下课程:
public static class Pages
{
public static string LoggedOut = "LoggedOut.aspx";
public static string Login = "Login.aspx";
public static string Home = "Home.aspx";
}
我知道我可以静态使用 Pages.Home
,但我的问题是有原因的。
我希望有一个可以像这样调用的方法:
string pageName = Pages.GetPage("Home");
等等。
这可能吗?
谢谢, 戴夫
I've got the following class:
public static class Pages
{
public static string LoggedOut = "LoggedOut.aspx";
public static string Login = "Login.aspx";
public static string Home = "Home.aspx";
}
I know I can use Pages.Home
statically, but there is a reason for my question.
I wish to have a method that I can call like this:
string pageName = Pages.GetPage("Home");
etc.
C'est possible?
Thanks,
Dave
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用以下内容:
You can use the following:
您可以像康拉德建议的那样使用反射来做到这一点。但我认为使用字典而不是依赖反射来完成这样的任务是更好的设计。
当然,您应该根据您的实际要求调整错误处理。
You can do it like Konrad suggested using reflection. But I would consider it much better design to use a dictionary and not rely on reflection for such a task.
You should of course adjust the error handling to your actual requirements.
只是我的注意...如果您要使用文字(“Home”),那么我绝对会绑定到
const
,即Pages.Home
(它们可能应该是给定示例中的常量)。如果您有以下情况,反射方法可能会很方便:如果您确实切换到
const
,那么请注意它们表现为静态字段:如果大量使用它,您也可以缓存这些在字典里。
Just my tuppence... if you are going to use literals ("Home"), then I would absolutely bind to the
const
, i.e.Pages.Home
(they should probably be constants in the example given). The reflection approach might be handy if you have:If you do switch to
const
, then note that they manifest as static fields:If it is used heavily you could also cache these in a dictionary.
正如其他人所说,我会避免在这里使用反射。另外,虽然它添加了更多代码,但硬编码页面名称的枚举也是一个好主意(之前也建议过)
As other have said, I'd avoid using reflection here. Also, although it adds a bit more code, an enum for the hardcoded page names is also a good idea (also suggested previously)