我想自定義屬性應用到一些方法,指示他們應該作爲一個事務處理。在一般情況下,我知道如何通過從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
}
如果保存數據( )方法拋出一個異常,那麼我們會落在Using之外,並且scope.Complete不會被調用。
我不想要找到每一個實例,其中保存數據()被調用和手動添加使用語句周圍的代碼。我怎麼能做一個導致這種行爲的屬性?
詛咒你和你的快速發佈,Jon Skeet !!! :D我有幾乎完全相同的職位;我正在查找PostSharp的鏈接,現在已經完成了。 – Randolpho 2009-04-07 15:41:16