我希望使用.NET FileSystemWatcher创建一个监视某些目录的Windows服务。我的计划是让一个FileSystemWatcher包含IncludeSubdirectores = True。但是我不想监视所有子目录。所以我的方法是创建一个我实际想要监视的目录的“白名单”。如果一个文件被更改并且它在我真正关心的目录中,我会采取一些行动。
现在我的问题来了。我希望在app.config中使用自定义配置部分来构建我的“白名单”。
<ApplicationMonitoring>
<MainDirectoryMonitored path="C:\MonitoredApps" />
<SubDirectoriesMonitored>
<Directory application="App1" path="C:\MonitoredApps\App1" />
<Directory application="App2" path="C:\MonitoredApps\App2" />
<Directory application="App3" path="C:\MonitoredApps\App3\SubDir1" />
</SubDirectoriesMonitored>
</ApplicationMonitoring>
到目前为止这么好吗?我可以将fileSystemWatcher.Path =设置为'MainDirectoryMonitored'的'path'属性,我可以枚举'SubDirectoriesMonitored'并检查它是否是我要监控的。
我想知道的是,是否可以验证,子目录的路径确实落在受监控的主目录路径下的某处。
示例:验证C:\ MonitoredApps \ App3 \ SubDir1确实在C:\ MonitoredApps等下的某处。
我知道用户应该非常直观,他们应该正确输入内容,但我想尽可能消除所有错误。
我认为这可以通过某种自定义配置验证器来完成,但是
a)我不确定它是否可以使用配置中的另一个值进行验证
和
b)我不知道如何做到这一点:)