ツリーを人間が読めるテキスト形式にシリアライズしたいと考えています (必要なストレージ容量が少ないほど良い)。XmlSerializer クラスで必要とされるパラメーターなしのコンストラクターとパブリック セッターを実装せずに、これを実現したいと考えています。これを達成するための標準的な方法は何ですか?
私のモデルは次のようになります。
public interface ISpecification<T>
{ //some stuff here }
// The tree will have some nodes like this
public abstract class CompositeSpecificationBase<T>
{
public ISpecification<T> Left { get; private set; }
public ISpecification<T> Right { get; private set; }
protected CompositeSpecificationBase(ISpecification<T> left, ISpecification<T> right)
{
Left = left;
Right = right;
}
}
public class AndSpecification<T> : CompositeSpecificationBase<T>, ISpecification<T>
{
public AndSpecification(ISpecification<T> left, ISpecification<T> right)
: base(left, right)
{}
// some stuff here
}
// At least one more implementation of CompositeSpecificationBase...
// There will be many leaf types like this
public class ExampleSpec : ISpecification<SomeEntity>
{
public int SomeProperty {get; private set;}
public ExampleSpec (int someProperty)
{
SomeProperty = someProperty;
}
}