覆盖getter和setter的替代方法

时间:2016-01-25 16:06:17

标签: c# encryption getter-setter postsharp

我有一些敏感数据,我想在数据库中加密并在代码中动态解密。由于它是现有的应用程序,我希望加密/解密过程在管道中尽可能低地运行,因此我不必修改我的服务级别。我的第一个解决方案是修改所选属性的getter和setter,通过我的加密助手来运行它们。然后我觉得将它包装在属性中会很好。发现可以做到的Post Sharp扩展,但对于这种情况似乎是一种矫枉过正。有没有其他选择来实现我想做的事情?

1 个答案:

答案 0 :(得分:1)

根据您使用EF的方式,您可以在EF DbContext之上构建一个包装器,这是一个通用存储库,您可以在其中注入一些钩子(拦截器)。

其中一个拦截器类似于 ICryptographyInterceptor ,它将基于实体类型处理加密(插入时)或解密(检索时)的逻辑,它不会污染您的业务逻辑或模型,因为这些拦截器将处理此任务。

可以找到现有的实施here

如果项目对于此类更改而言过于复杂,那么转换实体的 ICryptographyService 可能是更好的解决方案。