Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ConfigurationProperty的规范示例_C#_.net - Fatal编程技术网

C# ConfigurationProperty的规范示例

C# ConfigurationProperty的规范示例,c#,.net,C#,.net,我试图利用.NET配置并理解自定义部分、元素等 实现这些自定义部分似乎需要显式声明getter和setter,通常会导致代码膨胀 例如: 具体来说,我们似乎有必要在get和set方法中显式地返回和设置内容 // Create a "remoteOnly" attribute. [ConfigurationProperty("remoteOnly", DefaultValue = "false", IsRequired = false)] public Boolean RemoteOnly {

我试图利用.NET配置并理解自定义部分、元素等

实现这些自定义部分似乎需要显式声明getter和setter,通常会导致代码膨胀

例如:

具体来说,我们似乎有必要在get和set方法中显式地返回和设置内容

// Create a "remoteOnly" attribute.
[ConfigurationProperty("remoteOnly", DefaultValue = "false", IsRequired = false)]
public Boolean RemoteOnly
{
  get
  { 
    return (Boolean)this["remoteOnly"]; 
  }
  set
  { 
    this["remoteOnly"] = value; 
  }
}
有以下几点

[ConfigurationProperty("remoteOnly", DefaultValue = "false", IsRequired = false)]
public Boolean RemoteOnly { get; set }
不等同于上述情况


这真的是真的吗?即使有这样普通的属性,我们也必须冗长吗?

更简洁的形式
{get;set;}
扩展到使用私有数据成员(如果我没记错的话)。这只是C#的语法糖,与配置系统没有任何关系

对于ConfigurationProperty,您需要访问当前对象上的索引器来存储/检索您的值,因为系统就是这样设计的。你是对的,这有点冗长,但是没有真正的方法来解决这个问题——这就是存储/检索值的方式


我可以推荐一些方法让您创建这些属性更容易(并且更不容易出错?

是的,因为您依赖于外部存储机制(最终填充配置文件的基类字典)

此外,如果您担心代码膨胀,那么您担心的是错误的事情。写一次,不要再看。您不应该有太多处理自定义配置设置的代码,这样会使您的代码库膨胀。可能有点小肿块,但不是肿胀。另外,我很高兴您现在就开始处理这个问题,而不是在VS2005之前——您需要编写更多的代码(您必须手动解析XML部分)

最后,如果您仍然那么讨厌它,您可以始终使用“我需要的最后一个配置节处理程序”:


他写这篇文章已经很久了,但它仍然可以正常工作

Craig的解决方案有一个缺点:无法保存设置。它非常适合于只读场景。