C 使用KingAOP實現AOP面向切面程式設計二

2022-06-09 12:15:11 字數 1822 閱讀 8341

本文繼續上篇講述一下比較複雜點的aop例子,先新建乙個控制台專案,然後同樣先在nuget中搜尋安裝kingaop到專案中

1、專案結構

2 、定義乙個登入實體類user和loggingaspect切面日誌類

public

class

user

public

string name

public

string pwd

public

string state

public system.datetime logintime

}

///

///建立乙個日誌切面處理類

/// public

class

loggingaspect : onmethodboundaryaspect

public

override

void

onexception(methodexecutionargs args)

public

override

void

onsuccess(methodexecutionargs args)

public

override

void

onexit(methodexecutionargs args)

//////

aop處理登入日誌邏輯,只需在此進行修改即可,無需修改被切面的處理類

/// ///

//////

private

string createlogdata(string

methodstage, methodexecutionargs args)

", args.method));

foreach (var argument in

args.arguments)

else

= ; ",

property.name, property.getvalue(argument,

null

)); }}}

return

str.tostring();}}

3、定義乙個登入業務類login,並且繼承idynamicmetaobjectprovider類

///

///該類需要繼承idynamicmetaobjectprovider,因為kingaop是基於動態型別進行操作和繫結的,如不繼承是不會進入到刷選器中的相應事件裡

///登入功能,只需新增乙個loggingaspect即可實現日誌功能,達到業務邏輯和通用處理邏輯的分離

/// public

class

login : idynamicmetaobjectprovider

else

}//////

該類必須實現idynamicmetaobjectprovider的getmetaobject方法

/// ///

///public

dynamicmetaobject getmetaobject(expression parameter)

}

4、接下來就是測試**,如下

class

program

;test.loginvaldate(entity);

console.read();}}

使用註解實現AOP

xml標頭檔案中加入 xmlns context xsi schemalocation spring context.xsd 宣告哪些包下有註解 當有兩個以上的包時,用 隔開 在demo類中加入 component 在方法上新增 pointcut 定義切點 component public clas...

使用註解實現AOP

1.匯入jar包 與用介面實現 的jar包相同 2.配置 a.將業務類和通知類納入springioc容器 b.在容器中開啟註解對aop的支援 c.將類使用註解方式 component 放入ioc容器中時,要將該類所在的包新增到掃瞄器中 3.編寫通知類 1.加入註解 aspect,不用再實現介面 但是...

Scala 使用Curry實現AOP

業餘時間學了學scala,至今有3個多月了.這兩天看到群 54813143 裡有同學討論aop,於是就想出了如下實現 trait裡沒有任何抽象的值或方法 trait aop def add t function1 string,any targets t targets 收集所有被攔截的方法 函式物...