Атрибут создания C#, которые указывают на под управлением код после вызова свойства

Вставка объекта в отсортированный список является O (зарегистрируйте n), в то время как сортировка списка является O (n, регистрируют N), Который предположил бы, что всегда лучше отсортировать сначала и затем вставить

, Но remeber крупный 'O' только касается масштабирования скорости с количеством объектов, могло бы случиться так, что для Вашего приложения вставка в середине является дорогой (например, если это был вектор), и таким образом добавляя, и сортирование позже могло бы быть лучше.

6
задан Ronny 16 September 2009 в 06:51
поделиться

3 ответа

Я думаю, вы можете сделать это в PostSharp . К сожалению, вам нужно будет указать имя метода в виде строки - в C # нет оператора для преобразования имени метода в MethodInfo , хотя это предлагалось несколько раз.

Возможно, вам придется переместить атрибут, если вам нужен код для выполнения только после установщика (а не получателя):

public string Name
{ 
    get; 
    [MethodExecute("Log")] [MethodExecute("Save")] set;
}

(Для простоты здесь используется автоматически реализованное свойство.)

6
ответ дан 10 December 2019 в 02:50
поделиться

Вы также можете использовать механизм перехвата , предоставляемый контейнером внедрения зависимостей Unity . Рассмотрим в качестве примера реализацию INotifyProperyChanged с перехватом Unity .

0
ответ дан 10 December 2019 в 02:50
поделиться

На самом деле вы спрашиваете, есть ли в .NET framework какие-либо перехватчики для аспектно-ориентированного программирования (AOP). К сожалению, ответ - нет , не по умолчанию.

Есть много фреймворков, которые позволяют это делать, но большинство требует, чтобы типы, украшенные таким образом, создавались специализированной фабрикой.

  • Многие контейнеры DI имеют такие возможности перехвата, которые позволяют вам это делать. Примером такого контейнера DI является Castle Windsor .
  • Шаблоны и методы Microsoft однажды создали блок приложения для внедрения политики , который позволяет реализовать такой сценарий.
  • В более специализированных случаях. вы также видите это в определенных суб-фреймворках - например, в ASP.NET MVC есть что-то, называемое ActionFilter, которое работает таким образом, но только когда оно размещено в конвейере MVC.
3
ответ дан 10 December 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: