gpt4 book ai didi

c# - 是否可以在您不拥有且未创建的对象上拦截静态方法?

转载 作者:行者123 更新时间:2023-11-30 17:22:05 26 4
gpt4 key购买 nike

引用我对这个问题的可能答案:How would you audit ASP.NET Membership tables, while recording what user made the changes?

是否有可能拦截来自不属于您的代码的对不属于您的密封内部类上的构造函数的调用,目的是在返回之前操纵该对象?

具体例子:

SqlMembershipProvider,对于它的所有数据访问,实例化一个连接助手类,System.Web.DataAccess.SqlConnectionHolder

期望的结果是拦截此实例化并在让执行继续之前对在 System.Web.DataAccess.SqlConnectionHolder 的构造函数中打开的公共(public)连接执行操作。

更新:因此,正如 leppie 对我的示例所观察到的那样,我所说的我想要的根本不是我想要的。

目标现在是 System.Web.DataAccess.SqlConnectionHelper.GetConnection()

那么,我们能否拦截对该方法的调用呢?

internal static SqlConnectionHolder GetConnection(string connectionString, bool revertImpersonation)

这可能吗?如果是这样,将不胜感激。

最佳答案

从技术上讲,这可以通过 IL 重写器实现,类似于 Postsharp 所做的。但是,鉴于这是您所谈论的 .NET 程序集,它具有强大的名称,存储在 GAC 中并经过 ngen-ed,因此不太可能通过“技术上可行”的阶段。

关于c# - 是否可以在您不拥有且未创建的对象上拦截静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2912300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com