我的一个类要求使用默认构造函数进行序列化。但是,由于某些属性是必需的,所以解决此问题的最佳方法是什么,以便我可以要求设置属性。
从我所处的位置,我看到两种可能的情况:
答案 0 :(得分:3)
我会保持简单,不要弄乱属性。
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("...");
}
}