属性来防止方法执行
本文关键字:方法 执行 属性 | 更新日期: 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实现。