То есть вы хотите наследовать все функции FileSystemWatcher
при добавлении ваших свойств?
Попробуйте унаследовать класс:
public class MyFileSystemWatcher : FileSystemWatcher
{
public string XmlConfigPath { get; set; }
}
и после этого вы можете использовать свой новый класс в любом месте, где вы бы использовали System.IO.FileSystemWatcher
, например:
MyFileSystemWatcher fsw = new MyFileSystemWatcher();
fsw.XmlConfigPath = @"C:\config.xml";
fsw.Path = @"C:\Watch\Path\*.*";
Другой подход заключается в создании класса, который будет иметь как местоположение файла конфигурации, так и объект FileSystemWatcher в качестве свойства, следующим образом:
public class MyFileSystemWatcherManager
{
public string XmlConfigPath { get; set; }
public FileSystemWatcher Watcher { get; set; }
public MyFileSystemWatcherManager()
{
Watcher = new FileSystemWatcher();
}
}
и с использованием как это:
MyFileSystemWatcherManager manager = new MyFileSystemWatcherManager();
manager.XmlConfigPath = @"C:\config.xml";
manager.Watcher.Path = @"C:\Watch\Path\*.*";
Композиция возможна даже тогда, когда базовый класс не может быть унаследован, и, как правило, предпочтительнее с точки зрения ОО, поскольку большая часть кода, использующего ваш класс, будет полагаться только на ваш класс, а не на базовый класс. Однако, когда вы хотите наследовать всех базовых поведений и просто добавить некоторые (четко определенные) дополнительные функции, наследование является более простым и более тесно связанным решением.