属性来防止方法执行

本文关键字:方法 执行 属性 | 更新日期: 2023-09-27 18:10:31

我试图添加一个功能,让数据不被保存,如果一个应用程序设置设置为不保存。我有许多数据管理器,它们在我的应用程序中充当数据访问层。我的计划是创建2个自定义属性[DataRetention("PolicyNameHere")][InspectDataRetention],它们应该应用于我的数据管理器上的方法,当存在时,应用程序应该检查我的[DataRetention]上的RetentionSetting属性是否设置为DoNotSave,如果是,则忽略。例如:

public class User
{
     public string Name {get; set;}
     [DataRetention("PII")]
     public long SSN {get; set;}
}
public class UserManager
{
     public User GetUser(int userId);
     [InspectDataRetention]
     public void UpdateUser(User user);
     public void Delete(User user);
}

在上面的例子中,当在UserManager上调用UpdateUser时,应用程序将首先检查对象并搜索任何[dataretion]属性。然后,它将获取该属性的RetentionSetting属性(因为该属性的构造函数将设置保留设置),如果将其设置为DoNotSave,那么它将将该字段重置为其默认值(在本例中为0)。

[DataRetention("PII")]
public class User 
{         
     public string Name {get; set;}
     public long SSN {get; set;}     
}

那么,当配置DoNotSave时,UpdateUser应该简单地返回null(不执行更新方法)。

是否可以使用自定义属性?如果没有,在具有特定接口的拦截器之外(即RetainableDataManager: IDataManager并让我的所有数据管理器实现相同的IDataManager接口)是否有任何方法来完成此行为。

  • MVC4应用
  • 数据管理器是poco
  • 数据层前的业务层(也由poco组成)

属性来防止方法执行

您可能想看看AOP(面向方面的编程)。您的[InspectDataRetention]属性听起来很像一个可以被注入的方面。PostSharp是AOP的。net实现。