權(quán)限管理設(shè)計(jì)中 增加了BasePage,然后各個(gè)頁面public partial class LanEmail_EmailView : BasePage繼承BasePage如何在Basepage中判斷是哪個(gè)頁面繼承了它然后向它注冊(cè)權(quán)限相應(yīng)信息?
2 回答

守著一只汪
TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
你這樣設(shè)計(jì)是不對(duì)的,父類是不應(yīng)該“預(yù)計(jì)”到子類的存在的
如何在Basepage中判斷是哪個(gè)頁面繼承了它然后向它注冊(cè)權(quán)限相應(yīng)信息
那么事實(shí)上就是子類的注冊(cè)權(quán)限信息是不同的,你想把這些都?xì)w并到父類的一個(gè)方法里去。正確的做法是父類應(yīng)該有一個(gè)PrepareAccessInfo的虛方法:
protected virtual void PrepareAccessInfo() { //一些通用的實(shí)現(xiàn) }
然后每個(gè)子類如果有獨(dú)特的邏輯,就override這個(gè)方法,如果沒有獨(dú)特的邏輯,就可以不做任何事情而使用父類中的通用邏輯。這個(gè)方法你可以在適當(dāng)?shù)牡胤秸{(diào)用,比如page init的時(shí)候。

慕后森
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
使用this.GetType()方法就是知道當(dāng)前頁面的類型了,可以使用這個(gè)類型來作為key區(qū)分各個(gè)頁面的權(quán)限
- 2 回答
- 0 關(guān)注
- 473 瀏覽
添加回答
舉報(bào)
0/150
提交
取消