namespace FileSearch.Logic.Model.Engine
{
public interface ICriterion
{
///
/// Имя критерия фильтра.
///
string Name { get; }
///
/// Значение, указывающее усилия, необходимые системе для сопоставления файла.
/// Чем выше число, тем позже проверяется критерий.
///
CriterionWeight Weight { get; }
///
/// Указывает, поддерживает ли этот экземпляр критерия каталоги.
///
bool DirectorySupport { get; }
///
/// Указывает, поддерживает ли этот экземпляр критерия файлы.
///
bool FileSupport { get; }
///
/// Проверяет, соответствует ли файл или каталог этому критерию.
///
/// Entry файловой системы.
/// Контекст текущей работы всех критериев.
///
bool IsMatch(FileSystemInfo fileSystemInfo, ICriterionContext context);
///
/// Создает новый контекст для этого критерия.
///
/// Новый контекст для сопоставления файлов.
ICriterionContext BuildContext();
}
}