Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: enot от 09-09-2018, 20:09:11

Название: универсальный класс для Updater-ов
Отправлено: enot от 09-09-2018, 20:09:11
если Updater-ов создается несколько , есть ли способ создать универсальный класс , формирующий Updater-ы по единому шаблону?
возможно, есть готовый пример...
Название: Re: универсальный класс для Updater-ов
Отправлено: Александр Игнатович от 10-09-2018, 10:29:59
Эм. А зачем? Как бы вполне понятный интерфейс IUpdater и есть тот "шаблон".
Я у себя обычно ввожу расширенный интерфейс:
Код - C# [Выбрать]
  1. public interface IElementUpdater : IUpdater
  2. {
  3.         ElementFilter GetFilter();
  4.  
  5.         ChangeType GetChangeType();
  6. }

Чисто для удобства их регистрации:
Код - C# [Выбрать]
  1. public class UpdaterRegistratorHelper
  2. {
  3.         public void RegisterUpdater(IElementUpdater updater)
  4.         {
  5.                 UpdaterRegistry.RegisterUpdater(updater, true);
  6.  
  7.                 UpdaterRegistry.AddTrigger(updater.GetUpdaterId(), updater.GetFilter(), updater.GetChangeType());
  8.         }
  9.  
  10.         public void RegisterUpdaters(IEnumerable<IElementUpdater> updaters)
  11.         {
  12.                 foreach (var elementUpdater in updaters)
  13.                         RegisterUpdater(elementUpdater);
  14.         }
  15.  
  16.         public void SetExecutionOrder(IElementUpdater first, IElementUpdater second)
  17.         {
  18.                 UpdaterRegistry.SetExecutionOrder(first.GetUpdaterId(), second.GetUpdaterId());
  19.         }
  20. }