具有默认构造函数的 .NET 中的必需属性
本文关键字:属性 NET 默认 构造函数 | 更新日期: 2023-09-27 18:35:21
我的一个类要求将默认构造函数用于序列化目的。但是,由于某些属性是必需的,因此解决此问题的最佳方法是什么,以便我可以要求设置属性。
从我站立的位置,我看到了两种可能的情况:
- 我可以使用数据注释或类似的东西,以便在属性上放置一个 [必需] 属性,并在序列化之前检查每个 [必需] 属性是否有值,或者
- 我可以将验证逻辑放在类中的其他位置,以确保正确设置属性。
我会保持简单,不要弄乱属性。
public interface IDataValidator
{
void ValidateData();
}
public string Serialize<T>(T obj):where T:IDataValidator
{
obj.ValidateData();
return Serialize(obj);
}
public T Deserialize<T>(string serializedObj):where T:IDataValidator
{
T obj = Deserialize(serializedObj);
obj.ValidateData();
}
public class Book : IDataValidator
{
public string Isbn {get;set;}
public Book(){}
public Book(string isbn)
{
Isbn = isbn;
}
public void ValidateData()
{
if(string.IsNullOrEmptyOrWhiteSpace(Isbn)
throw new ApplicationException("...");
}
}