Нет; приписывать не предназначены для введения кода. Такие инструменты, как postsharp, обходят это дымом и зеркалами, но без этого: нет. Другим вариантом может быть шаблон декоратора,
возможно, динамически реализующий интерфейс (совсем не тривиальный). Однако добавление служебного вызова метода в начало метода (ов) на намного проще и, вероятно, хорошо, поскольку, если у вас есть доступ для добавления атрибутов, у вас есть доступ для добавления вызова метода.
Или другими словами: такие инструменты, как postsharp, существуют точно, потому что не существует "из коробки".
// poor man's aspect oriented programming
public void Foo() {
SomeUtility.DoSomething();
// real code
}
В некоторых случаях подклассы могут быть полезны, особенно если подкласс выполняется во время выполнения (метапрограммирование):
class YouWriteThisAtRuntimeWithTypeBuilder : YourType {
public override void Foo() {
SomeUtility.DoSomething();
base.Foo();
}
}