Здравствуйте!
Код из стандартного скрипта scr_DB:
function EnableFilter(FiltersNode, FilterCode, Enabled) {
CheckAssigned(FiltersNode, 'Filter');
if (FiltersNode.Code == FilterCode) {
FiltersNode.IsEnabled = Enabled;
// Enable all included filters
EnableAllFilters(FiltersNode, Enabled);
return true;
}
var Result = false;
if (FiltersNode.FilterType == ftFilters) {
for (var i = 0; (i FiltersNode.Count) && (!Result); i++) {
Result = EnableFilter(FiltersNode.Items(i), FilterCode, Enabled);
}
if (Result && Enabled) {
FiltersNode.IsEnabled = true;
}
} else
if ((Assigned(FiltersNode.TestExpression)) &&
(FiltersNode.TestExpression.ExpressionType == fetSelect)) {
EnableSelectQueryFilters(
FiltersNode.TestExpression.ExpressionSelectQuery, Enabled,
new Array(FilterCode));
}
return Result;
}
Здесь, FiltersNode - это набор фильтров с типом IFilters
Тем не менее, из скрипта возможно обращение вида
FiltersNode.Code == FilterCode
На С# подобное обращение невозможно, поскольку при явном указании типа IFilters у FiltersNode отсутствует свойство Code. Привести же FiltersNode к типу IFilter тоже не получается, поскольку интерфейс IFilter не поддерживается, что логично, поскольку это все же коллекция ( что подтверждает вызов FiltersNode.Items(i))
Разъясните пожалуйста, как я могу переписать указанную функцию на С#.