You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨项目自定义INIT特性失效问题求助及解决方案

跨项目使用自定义INIT特性无效的解决方案

我最近碰到了一个跨项目使用自定义方法拦截特性的问题,这里分享下问题场景和最终的解决办法:

问题背景

我有两个.NET项目:基础类库项目P1,以及引用了P1的业务项目P2。在P1里定义了一个实现IMethodDecorator接口的INIT自定义特性,用来在方法执行前后触发OnEntry()、OnExit()钩子方法。

在P1内部的方法上标注[INIT]特性时,所有钩子方法都能正常触发;但当在P2的方法上使用这个特性时,完全没有效果,OnEntry()和OnExit()都不会执行。

P1中的INIT特性代码

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Assembly | AttributeTargets.Module)]
public class INIT : Attribute, IMethodDecorator {
    public void OnEntry() { //some code here }
    public void OnExit() { //some code here }
    public void OnException(Exception exception) { //some code here }
}

P2中的特性使用示例

public class LoginToPCM_31463 {
    [INIT]
    public static void SmokeTest_LoginToPCMApplication_31463(RemoteWebDriver Driver) {
        try { } catch (Exception e) { }
    }
}

解决步骤

经过多次尝试,通过以下两步彻底解决了问题:

  • 移除INIT特性的命名空间(确保特性能被P2直接访问到)
  • 在P1和P2的项目中都添加[module: INIT]特性(通常可以放在项目的AssemblyInfo.cs文件中,或者任意代码文件的顶部位置)

完成这两项操作后,P2中标记了[INIT]的方法就能正常触发对应的钩子方法了。

内容的提问来源于stack exchange,提问作者gnagesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 13:52:57