我在AppSettings中保留了很多设置,我想知道在UpperCase中命名它们是否合适。从本质上讲,它们与常数相同吗?据我了解,如果您更改Web.Config,该应用程序会重新编译。
所以,我在想,你应该把AppSettings中的设置保持在UPPERCASE中(假设你用所有UPPER案例命名你的常量。)
此外,从AppSettings获取值的变量应该是大写吗?
EG。
String MY_SETTING = ConfigurationManager.AppSettings["MY_SETTING"];
处理这些并使它们看起来和感觉像常量的最佳方法是什么?这甚至是个好主意吗?我能想到的唯一方法就是让它只读:
readonly String MY_SETTING = ConfigurationManager.AppSettings["MY_SETTING"];
但后来我不知道你怎么能用int:
来做到这一点readonly String MAX_USERS_S = ConfigurationManager.AppSettings["MAX_USERS"];
readonly int MAX_USERS; // needs to be set here... won't compile
int.TryParse(MAX_USERS_S, out MAX_USERS);
我不知何故感觉脏设置只读变量看起来像常量,但对我来说,web.config中的东西基本上是不变的。
建议?
答案 0 :(得分:2)
如果你认为它们是有效的常量,并且它们只是一个不可变类型的变量(int
,string
等),那么一定要使用相同的命名约定。实际上,这就是String.Empty
所做的。但是,常量的.NET naming convention不是SHOUTY_CAPS
,而是PascalCase
。
答案 1 :(得分:1)
没有。 .NET naming guidelines中没有全大写命名的情况。
答案 2 :(得分:1)
如果你希望它们看起来和感觉像常量,我建议的第一个地方是用Pascal-case命名它们,所以MY_SETTING(它实际上不是一个类似C#的名字)将是“MySetting”。您可以在框架中看到公开暴露的属性和常量。
readonly是去这里的正确方法。在实例字段的情况下,它只能在声明或构造函数中设置。对于静态字段,它只能在静态构造函数或声明中设置。
对于TryParse的调用,您可以在构造函数或静态构造函数中设置它,具体取决于它是实例还是静态字段:
static MyClass()
{
// The value.
int myUsers;
// Try to parse.
if (int.TryParse(MAX_USERS_S, out myUsers))
{
// Assign.
MyUsers = myUsers;
}
}
答案 3 :(得分:1)
据我了解,如果您更改了Web.Config,该应用程序会重新编译。
这是正确的,对Web.Config的任何更改都将重新编译应用程序。甚至像换行一样小的变化。
忽略命名约定问题,您可以使用您的示例执行以下操作:
readonly int MAX_USERS =
int.Parse(ConfigurationManager.AppSettings["MAX_USERS"])
显然,如果MAX_USERS
不是int,这不是一种安全的方法,但是当MAX_USERS
无法设置时抛出异常似乎是正确的过程行动。