第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

.net自定義特性有辦法控制下面方法執(zhí)行或不執(zhí)行或直接返回某個值嗎

.net自定義特性有辦法控制下面方法執(zhí)行或不執(zhí)行或直接返回某個值嗎

函數(shù)式編程 2018-12-07 00:55:37
.net自定義特性中,有沒有辦法控制方法執(zhí)行或不執(zhí)行或直接返回某個結(jié)果呢? 比如說 ?? ? ? [MyAttribute] ? ? public string ToStr() {?????????? return "This is a demo class";??????? } ?? 如何自定義MyAttribute這個特性,讓擁有這個特性方法不執(zhí)行,或者在方法之前先執(zhí)行別的方法,更或者在不執(zhí)行方法而直接返回某個值呢
查看完整描述

4 回答

?
搖曳的薔薇

TA貢獻(xiàn)1793條經(jīng)驗 獲得超6個贊

問題的答案取決于你是如何調(diào)用這個方法的,假如你提到的ToStr是Abc類的成員,即: public class Abc { [MyAttribute] pubilc string ToStr() { ... ... } } 而且是通過Abc類型的引用調(diào)用的此方法(就像下面的代碼一樣),那么答案是不能。 Abc a = new Abc(); a.ToStr() 如果Abc實現(xiàn)某個接口(或繼承自某個基類),比如IAbc,而且ToStr是此接口的成員,那么答案依賴于你是如何得到IAbc類型的引用的,比如 Abc a = new Abc(); // 1. 這種情況下不能實現(xiàn)你期望的行為。 IAbc ia = a; ia.ToStr(); // 2. 這種情況下可以實現(xiàn)你期望的行為。 IAbc ia = SomeFactory.Create(a); 2中SomeFactory的具體形式取決于你所使用的工具,可能的工具包括: DynamicProxy技術(shù),可用實現(xiàn)有Castle's DynamicProxy for .net等; AOP技術(shù),可用的實現(xiàn)有Enterprise Library等; Mock object技術(shù),可用的實現(xiàn)有NMock2等; .NET TypeDescriptor技術(shù),這個是.NET類庫提供的,可以參考其“目標(biāo)替換和影化”功能; .NET Remoting技術(shù),這個也是.NET類庫提供的。 自定義,如下面的代碼所示。 所有這些技術(shù)的本質(zhì)都是一樣的——用另外一個實現(xiàn)IAbc接口的對象ia包裝a對象,它的所有方法都可以根據(jù)a對象的具體情況返回不同的結(jié)果。 下面簡要描述自定義方式的實現(xiàn)思路。 public class AbcProxy : IAbc { public static IAbc Create(IAbc inner) { return new AbcProxy(inner); } public AbcProxy(IAbc inner) { this.inner = inner; } public string ToStr() { 1. 使用反射方法獲取inner上的MyAttribute標(biāo)記attr; 2. 進(jìn)行前處理,比如根據(jù)attr的屬性取得固定的值或者; 3. 計算inner.ToStr()的結(jié)果; 4. 進(jìn)行后處理,比如把所有字符改為大寫; 5. 返回結(jié)果。 } private IAbc inner; } 使用方式如前段代碼所示。
查看完整回答
反對 回復(fù) 2018-12-09
?
白衣染霜花

TA貢獻(xiàn)1796條經(jīng)驗 獲得超10個贊

等待高手
查看完整回答
反對 回復(fù) 2018-12-09
?
泛舟湖上清波郎朗

TA貢獻(xiàn)1818條經(jīng)驗 獲得超3個贊

確實不懂
查看完整回答
反對 回復(fù) 2018-12-09
  • 4 回答
  • 0 關(guān)注
  • 512 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號