.NET中的Conditional Attribute允許您在編譯時禁用方法的調用。我正在尋找基本上相同的東西,但在運行時。我覺得在AOP框架中應該存在這樣的事情,但我不知道這個名字,所以我很難弄清楚它是否被支持。我可以在運行時使用屬性有條件地控制方法調用嗎?
因此,作爲一個例子,我想這樣做
[RuntimeConditional("Bob")]
public static void M() {
Console.WriteLine("Executed Class1.M");
}
//.....
//Determines if a method should execute.
public bool RuntimeConditional(string[] conditions) {
bool shouldExecute = conditions[0] == "Bob";
return shouldExecute;
}
那麼,曾經在代碼中存在對中號方法的調用,它會首先調用RuntimeConditional並傳遞Bob來確定是否應該執行M。
在你的例子中,什麼樣的代碼會讓M執行?什麼樣的代碼會使它不能執行,你會期望發生什麼? – Stobor 2009-08-07 01:46:03
RuntimeConditional方法將控制它是否會執行。現在鮑勃是硬編碼的,所以它會一直執行。 RuntimeConditional方法中的字符串Bob將被替換爲一些代碼以從配置文件/數據庫字段中拉取以查看該方法是否應該被調用。 – Bob 2009-08-07 01:48:41
您可以簡單地在Trace屬性的OnEntry覆蓋中引發異常。不完全是你要找的東西,但它會阻止你的方法執行。 – 2009-08-07 05:37:49