如何制作一个可以包含编译时未定义的属性的自定义配置节



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

比方说,我有一个Log类,然后根据它进行Sub-classed,我有文件日志和电子邮件日志。现在让我们说,我想有一个配置部分,如

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。有什么办法可以使这件事复杂化吗?

您可以重写OnDeserializeUnrecoguedAttribute方法,并将值存储在某种属性包中。如果您查看系统。诊断。系统程序集中的ListenerElement类,您可以看到它正是这样做的;您需要获取框架源代码或使用反编译器。

最新更新