在webserivce编码中,我想从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"];
}
}
它会说:
分配给的表达式 ' Service.AppCode.Common.Constants.Namespace'必须是不变的
是否可以从web.config中调用它?
答案 0 :(得分:1)
常量在编译时定义并直接嵌入到生成的代码中,它们在应用程序执行时不会初始化。 (并且不能改变,不像配置值可以改变。)
然而,看着这个......
public class Constants
{
public readonly static string Namespace =
ConfigurationManager.AppSettings["DefaulIP"];
}
看起来你只想要一个静态的不可变值。这很容易......
public class Constants
{
public static string Namespace
{
get { return ConfigurationManager.AppSettings["DefaulIP"]; }
}
}
只要调用它,它就会从配置中动态读取值。因为它只是一个吸气剂,所以它是只读的。如果您希望它只从配置中读取一次,只需缓存值:
public class Constants
{
private static string _namespace = null;
public static string Namespace
{
get
{
if (_namespace == null)
_namespace = ConfigurationManager.AppSettings["DefaulIP"];
return _namespace;
}
}
}