使用属性向方法添加参数

本文关键字:添加 参数 方法 属性 | 更新日期: 2023-09-27 18:31:39

诚然,这是一个很长的机会。我正在制作一个审计部分,您可以在操作的开始和结束时打开和关闭审计记录。我把它很好地安装起来,以便为了审核方法,您只需在其上添加一个[Audit(AuditType.Something)]属性,如果需要,还可以添加一些其他信息,例如消息。然后,使用 SNAP,我有一个拦截器来处理创建 Audit 对象,然后打开和关闭它。

一个

同事提出了一个案例,我们需要在审计中有一个非常量的消息,这意味着它不能进入属性声明。我曾考虑过在类中粘贴一个 Audit 属性并在让方法继续之前让注入器设置它,但这似乎很草率,因为非审计对象可以访问该属性,而且它会在很多地方重复。还有一些方法可以在没有属性的情况下创建审核,但是能够将内容很好地包装在属性中会更好。

理想的情况是,如果我能以某种方式设置它,以便具有 [Audit] 属性的方法可以访问一个变量,我可以将其审计对象从注入器粘贴到其中。这是可能的,还是只是一厢情愿的想法?

使用属性向方法添加参数

如果 Audit 属性采用类型 Type 的参数,其中提供的Type实现生成审核消息的接口,该怎么办? 例如:

public interface IAuditMessageProvider {
    public String MakeMeAnAuditMessage(/* some args perhaps */);
}
public class PiAuditMessageProvider : IAuditMessageProvider {
    public String MakeMeAnAuditMessage() { return "3.14"; }
}
[Audit(typeof(PiAuditMessageProvider))]
public void myMethod { ... }

然后你可以使用 Activator.CreateInstance 实例化提供的类型,将其强制转换为 IAuditMessageProvider ,并调用相关方法。