如何创建可以包含在编译时未定义的属性的自定义配置节?

时间:2012-11-16 16:59:21

标签: c# configuration configurationsection

请注意,这不是实际情况,只是一个简化的例子。

假设我有一个Log类,然后Sub归类为我有一个文件日志和一个电子邮件日志。 现在让我们说我想要一个配置部分,如

   Logs>
     Log Type="file" fileName="log.txt" Verbosity="3"/>
     Log Type="email" emailAddress="email@server.com" Verbosity="1"/>
   /Logs>

目前我有一个允许

的解决方案
   Logs>
     Log Type="file" Verbosity="3"/>
     Log Type="email" Verbosity="1"/>
   /Logs>

但是一旦我尝试添加fileName或emailAddress *(这只是一个示例),我就会收到错误,因为基本日志类的配置部分不包含特定于子日志类型的configurationProperties。有什么方法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

您可以覆盖OnDeserializeUnrecognizedAttribute方法并将值存储在某种属性包中。如果查看System程序集中的System.Diagnostics.ListenerElement类,您可以看到它就是这样做的;你需要获得框架源或使用反编译器。