C#给实体类加个特性加密
时间: 2023-10-19 13:09:35 浏览: 42
在C#中,可以使用特性(Attribute)为实体类属性添加元数据信息。如果您想为实体类属性添加加密特性,可以按照以下步骤操作:
1. 创建一个继承自 System.Attribute 的特性类,用于表示加密特性。
```csharp
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class EncryptAttribute : Attribute
{
}
```
2. 在实体类属性上添加加密特性。
```csharp
public class User
{
public int Id { get; set; }
[Encrypt]
public string Name { get; set; }
[Encrypt]
public string Email { get; set; }
}
```
3. 在程序中获取实体类属性上的加密特性,并实现属性加密逻辑。
```csharp
public static class EncryptHelper
{
public static string Encrypt(string value)
{
// 实现加密逻辑
}
}
public static class EntityHelper
{
public static void EncryptProperties(object entity)
{
Type entityType = entity.GetType();
foreach (var propertyInfo in entityType.GetProperties())
{
if (propertyInfo.GetCustomAttributes(typeof(EncryptAttribute), false).Any())
{
string value = propertyInfo.GetValue(entity)?.ToString();
if (!string.IsNullOrEmpty(value))
{
string encryptedValue = EncryptHelper.Encrypt(value);
propertyInfo.SetValue(entity, encryptedValue);
}
}
}
}
}
```
这样,当您调用 EntityHelper.EncryptProperties 方法时,会遍历指定实体类的所有属性,检查是否使用了加密特性,如果使用了,则将属性值加密。