我正在尝试使用.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 }不等同于上面的。
这真的是真的吗--即使有这样的普通属性,我们也必须冗长吗?
发布于 2012-05-09 05:05:14
是的,因为您依赖于外部存储机制(基类的字典,它最终填充配置文件)。
此外,如果您担心代码膨胀,那么您担心的是错误的事情。写一次,再也不要看了。你不应该有太多的代码来处理自定义配置设置,这会使你的代码库膨胀。可能会有一点小肿块,但不会肿胀。而且,我很高兴您现在正在处理这个问题,而不是在VS2005之前--您必须编写更多的代码(您必须手动解析XML节)。
最后,如果你仍然讨厌它,你可以使用“我所需要的最后一个配置节处理程序”:https://sites.google.com/site/craigandera/craigs-stuff/clr-workings/the-last-configuration-section-handler-i-ll-ever-need
他写这篇文章已经有很长一段时间了,但它应该仍然可以正常工作。
发布于 2012-05-09 05:04:43
更简洁的表单{ get; set; }扩展到使用私有数据成员(如果我没记错的话)。这只是C#的语法糖,与配置系统没有任何关系。
对于ConfigurationProperty,您需要访问当前对象上的索引器来存储/检索值,因为系统就是这样设计的。您是对的,它有点冗长,但没有真正的方法可以绕过它-这就是值必须被存储/检索的方式。
我可以推荐一些Code Snippets让您更容易(也不容易出错)创建这些属性吗?
https://stackoverflow.com/questions/10506323
复制相似问题