Я хотел бы применить пользовательский атрибут к некоторым методам, который указывает, что они должны обрабатываться как транзакция. В общем, я знаю, как создавать пользовательские атрибуты путем наследования от System.Attribute, но я не знаю, как делать то, что мне нужно.
Моя цель примерно такая:
[TransactionalMethod()]
public void SaveData(object someObject)
{
// ... maybe some processing here
// ... then the object gets saved to a database
someObject.Save();
}
Атрибут TransactionalMethod () заставит метод вести себя так, как если бы он был заключен в TransactionScope ...
try
{
using(TransactionScope scope = new TransactionScope())
{
SaveData(someObject);
scope.Complete();
}
}
catch
{
// handle the exception here
}
Если метод SaveData () выдает исключение, мы бы вышли за пределы использования, и область видимости.Комплект не был бы вызван.
Мне не нужно искать каждый экземпляр, в котором вызывается SaveData (), и вручную добавлять в него код Using. Как я могу создать атрибут, который вызывает такое поведение?