Dan*_*ris 1 .net c# filesystems windows-services
是否可以将自定义属性添加到作为.NET框架一部分的对象?
我知道如果我只是给一个类我写了一个属性我会怎么做,但是如何在FileSystemWatcher类中添加一个自定义属性呢?
我在想要从XML文件中观看的路径中加载,但是也想添加一个属性来存储更多信息,在这种情况下是配置文件的位置.我可以将此属性添加到FileSystemWatcher类本身吗?
所以你想继承你的所有功能FileSystemWatcher,同时添加你的属性?尝试继承该类:
public class MyFileSystemWatcher : FileSystemWatcher
{
public string XmlConfigPath { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
之后你可以在你使用的每个地方使用你的新课程System.IO.FileSystemWatcher,如下所示:
MyFileSystemWatcher fsw = new MyFileSystemWatcher();
fsw.XmlConfigPath = @"C:\config.xml";
fsw.Path = @"C:\Watch\Path\*.*";
Run Code Online (Sandbox Code Playgroud)
另一种方法是创建一个类,它将具有配置文件位置,FileSystemWatcher对象作为属性,沿着这些行:
public class MyFileSystemWatcherManager
{
public string XmlConfigPath { get; set; }
public FileSystemWatcher Watcher { get; set; }
public MyFileSystemWatcherManager()
{
Watcher = new FileSystemWatcher();
}
}
Run Code Online (Sandbox Code Playgroud)
并使用这样的用法:
MyFileSystemWatcherManager manager = new MyFileSystemWatcherManager();
manager.XmlConfigPath = @"C:\config.xml";
manager.Watcher.Path = @"C:\Watch\Path\*.*";
Run Code Online (Sandbox Code Playgroud)
即使无法继承基类,也可以进行组合,从OO的角度来看,它通常是首选,因为使用您的类的大多数代码将仅依赖于您的类,而不依赖于基类.但是,当您确实希望继承所有基本行为并且只添加一些(定义良好的)附加内容时,继承是更简单且更紧密耦合的解决方案.