在网络服务编码中,我想从 web.config 调用一个常量名称。
我有这个代码:
namespace Service.AppCode.Common.Service
{
[ServiceContract(Namespace = Constants.Namespace)]
public interface IService1
{
[OperationContract]
void DoWork();
}
}
和这个代码:
namespace Service.AppCode.Common
{
public class Constants
{
public const string Namespace = ConfigurationManager.AppSettings["DefaulIP"];
}
}
它会说:
The expression being assigned to 'Service.AppCode.Common.Constants.Namespace' must be constant
是否可以从 web.config 调用它?
最佳答案
常量在编译时定义并直接嵌入到生成的代码中,它们在应用程序执行时不会被初始化。 (并且不能改变,不像一个可以改变的配置值。)
然而,看着这...
public class Constants
{
public readonly static string Namespace =
ConfigurationManager.AppSettings["DefaulIP"];
}
看起来您只想要一个静态的不可变值。这很容易...
public class Constants
{
public static string Namespace
{
get { return ConfigurationManager.AppSettings["DefaulIP"]; }
}
}
这将在调用时从配置动态读取值。因为它只是一个 getter,所以它是只读的。如果您希望它只从配置中读取一次,只需缓存该值:
public class Constants
{
private static string _namespace = null;
public static string Namespace
{
get
{
if (_namespace == null)
_namespace = ConfigurationManager.AppSettings["DefaulIP"];
return _namespace;
}
}
}
关于c# - 从 web.config 调用一个常量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27506800/