2015-05-16 99 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