我正在尝试使用.NET配置并了解自定义部分,元素等。
似乎实现这些自定义部分需要明确声明getter和setter,通常会导致代码膨胀。
例如:
http://msdn.microsoft.com/en-us/library/2tw134k3.aspx
具体来说,我们似乎有必要在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 }
不等同于上述内容。
这是否真的如此 - 即使有这样的香草属性,我们也必须冗长吗?
答案 0 :(得分:5)
是的,因为你依赖的是外部存储机制(基类的字典最终会填充配置文件)。
另外,如果你担心代码臃肿,你会担心错误的事情。写一次,再也不看了。您不应该有太多代码处理自定义配置设置,它会使您的代码库膨胀。可能是一个小小的凹凸,但不是臃肿。另外,我很高兴你现在处理这个问题而不是VS2005之前 - 你必须编写更多的代码(你必须手动解析XML部分)。
最后,如果你仍然讨厌那么多,你可以随时使用“我需要的最后一个配置部分处理程序”: https://sites.google.com/site/craigandera/craigs-stuff/clr-workings/the-last-configuration-section-handler-i-ll-ever-need
他写这篇文章已经有很长一段时间了,但它仍然可以正常工作。
答案 1 :(得分:2)
更简洁的表单{ get; set; }
扩展为使用私有数据成员(如果我没记错的话)。这只是C#的语法糖,并不与配置系统有任何关系。
对于ConfigurationProperty,您需要访问当前对象上的索引器来存储/检索您的值,因为这就是系统的设计方式。你是对的,它有点冗长,但没有真正的解决方法 - 那就是必须如何存储/检索这些值。
我可以建议一些Code Snippets让您更轻松(并且不易出错)来创建这些属性吗?