2015-05-16 138 views
1

現在很多庫自動註冊/開始使用PreApplicationStartMethodAttribute approach我可以重寫PreApplicationStartMethodAttribute嗎?

我不喜歡它。我想控制何時運行init代碼,原因有很多。在很多情況下,我想從Application_Start自己調用init代碼。

有什麼方法可以攔截這些電話並阻止它們?

+0

請不要爭論這是不是一個好主意。給他自己的。我們不喜歡自動啓動行爲。 –

+0

我看過的任何init代碼都來自一個代碼模板,它被轉儲到我的項目'App_Start'中。我沒有意識到有內部使用它的庫...... –

+0

@BradChristie如果你使用一個神奇地做了一些東西而不要求它的庫,那很可能是因爲它使用了這種預啓動方法。也許它適用於你,也許它不適用。我們發現很難整合到我們的init代碼中,並且很難測試各種情況,因爲我們基本上沒有控制權。 –

回答

1

我懷疑你可以停止這種機制的所有用途,因爲它會違背機制的基本目的之一:允許庫和插件掛鉤到初始化階段並運行它們自己的初始化代碼,沒有需要手動放置初始化代碼 - 使這些庫能夠自主控制其初始化。

讓我們來看看會發生什麼如果有可能關閉此機制:它會中斷依賴它的庫,以便它們的初始化在啓動時早於Application_Start執行。它也會中斷那些不需要文檔或指定用戶手動初始化庫的方法。

恐怕這個機制的意思是保證與你希望完成的事情相反。

+0

對於一些圖書館來說,你是對的。但對於其他人來說,這種機制被不必要地包含在內,並且是一種代碼魔法,並且可能導致設計草率。有許多我想控制自己的圖書館,或者我需要控制自己。 –

+0

你也說過,根本目的是讓圖書館自行初始化......這是我們的問題。我是該圖書館的用戶。當我想要時,我想訪問它的可用行爲。我不想自動行爲。這是一種神奇的形式,如魔術字符串和魔術數字,以及automagic配置。換句話說,除非我指示它這樣做,否則我不希望某個庫改變* my *系統的行爲。我對這個機制有一個基本問題,我相信它在一個嚴肅的系統中是沒有位置的。 –

+0

我認爲你誇大了它的「魔力」,因爲提供「插件」的初始化機制是一個非常有效的目標,但是我關心你。你沒有你想要的控制,這是加重的。但爲了讓你擁有想要的控制權,其他的東西就會變得易碎,這就是爲什麼我認爲你想要的控制不可用。也許有一種方法可以做到你想做的事情,如果存在的話,我會感到驚訝 - 因爲它有可能破壞某些與初始化一樣重要的事情。 – DWright