public
class
employee
,密碼:
",employeename,employeepwd);
logmanager.logwrite(
"add");
}}class
logmanager}//
主程式:
static
void
main(
string
args)
);localdatastoreslot localslot
=thread.allocatenameddataslot(
"principal");
thread.setdata(localslot, gp);
employee em
=new
employee();
em.add(
"lfm",
"lfm");
}
使用postsharp記錄日誌
[serializable]
class
samplelogattribute : onmethodboundaryaspect
}日誌記錄類:
class
logmanager}
然後在需要記錄日誌的方法上標識samplelogattribute即可
相應方法
[samplelog]
public
void
add(
string
employeeid,
string
pwd)
密碼:"
, employeeid, pwd);}
這時我們執行程式會得到如下結果:
這裡我們需要去了解一下onmethodboundaryaspect類,我們可以通過重寫onentry,onsuccess兩個方法來截獲方法的資訊,onentry是在標識了相應特性的方法前觸發,而onsuccess是在標識了相應特性的方法後觸發。
2、我們可能需要記錄方法的一些更詳細的資訊,比如說更新操作,我們需要記錄更新前的資訊
日誌的記錄特性**如下:
複雜日誌記錄
[serializable]
class
updatelogattribute : onmethodboundaryaspect
,原值:
",item.name,
item.getvalue(eventargs.instance,
null
));}
console.writeline();}}
//業務類:
class
employee
[updatelog]
public
void
update(employee em)
,pwd:",
this
.employeeid,
this
.pwd);
}public
string
employeeid
public
string
pwd }
執行主程式結果如下:
也許還有些情況日誌記錄會更複雜,但一般情況下我們都可以通過截獲方法的引數,例項的屬性等獲得想要的資訊。可能你會覺得這樣乙個乙個寫特性也挺麻煩,postsharp提供了一種廣播橫切點的方式,我們可以在類上使用相關的特性然後設定其attributetargetmembers值,如:
[samplelog(attributetargetmembers = "add*")]
class employee
這樣employee類中所有使用add開頭的方法都將記錄日誌,也可以設定整個程式集,大家可以參考postsharp提供的文件。
例項講解PostSharp(一)
public class employee 密碼 employeename,employeepwd logmanager.logwrite add class logmanager 主程式 static void main string args localdatastoreslot localsl...
例項講解PostSharp(二)
新增事務 有些方法可能需要事務支援,我們可能希望事務和業務分開的,也就是說當編寫業務 時根本就不用關心事務,下面我們看乙個場景,乙個銀行帳 戶管理類中有乙個用於轉賬的方法,如下 code class accountmanager public void update intid,account ac...
PL SQL例項講解(一)
題目要求 某加工廠發貨規則是 每車發貨480件,週六週日不發貨,供貨期間除了最後一批貨外其餘只能整車發貨。舉個例子 某廠商需求三天貨,周四需要供貨300,周五需要供貨200,週六需要供貨400,下周一需要供貨200。原發貨表如下 ship date ship qty plan type 2016 1...