c# - 从 web.config 调用一个常量名称

标签 c# asp.net namespaces constants

在网络服务编码中,我想从 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/

相关文章:

C#检测日期何时更改

c# - 保护命名空间

namespaces - 从 pyxb 绑定(bind)创建命名空间字典?

java - 更改 jaxb 中对象的命名空间

c# - 如何将 Storyboard用于 1 个以上的目标对象?

c# - LINQ 查询获取具有指定类型成员的所有实体

asp.net - asp.net 中的 .NET : understanding web. 配置

ASP.NET 本地化的单数和复数

c# - 通过 IsVisibility 控制 Telerki GridViewDataColumn 的可见性

c# - 中继器控件内的 IF 条件?