大家好
我想问一下,在这些情况下如何使用策略注入应用程序块来记录方法的进入和退出:
案例1: 在记录 Web 表单控件的事件处理程序的情况下,您知道该类假设 _Default 必须从类System.Web.UI.Page继承,因此我们不能从MarshalByRefObject类继承我们的类,因此日志记录将不起作用.
Case2:如果我们有一个静态类并且我们必须记录其中的方法,我们可以做些什么来从MarshalByRefObject calss 继承这个类,以便获得日志记录工作。
大家好
我想问一下,在这些情况下如何使用策略注入应用程序块来记录方法的进入和退出:
案例1: 在记录 Web 表单控件的事件处理程序的情况下,您知道该类假设 _Default 必须从类System.Web.UI.Page继承,因此我们不能从MarshalByRefObject类继承我们的类,因此日志记录将不起作用.
Case2:如果我们有一个静态类并且我们必须记录其中的方法,我们可以做些什么来从MarshalByRefObject calss 继承这个类,以便获得日志记录工作。
在我看来,他们有一些愚蠢的要求才能应用日志记录......这可能是一个题外话,但您可能希望查看 Spring.AOP 框架以将日志记录应用到您的对象,而无需从 MarshalByRefObject 继承。(在多重继承截断语言中,我认为这是一个烦人且苛刻的要求)。
关于案例 1,策略注入块能够作用于您拥有接口的对象。如果您在编写时还没有考虑到接口,可以使用 Refactor->Extract Interface 操作在 Visual Studio 中轻松完成。
关于案例 2,您的“静态”类实际上不可能是静态类。它可以从 MarshalByRefObject 继承或实现您指定的接口。然后它可以有一个私有构造函数和一个你策略注入的单例实例。您的所有静态方法只会在类的单例实例上调用相应的(策略注入)实例方法。