Since an object that can be XML serialized need a public parameterless constructor, it seems you have a hole in your class design even before you hit XML serialization.
Personally I would go with lazy calculation of those fields. Store a flag inside the class whether you have calculated the fields or not, and set that field to a value signifying "out of date" when any of the properties that are used in the calculation is changed. Then, in the properties that return the calculated values, check if you need to recalculate before returning the value.
This would then work regardless of XML serialization or not.
example:
[XmlType("test")]
public class TestClass
{
private int _A;
private int? _B;
public TestClass()
: this(0)
{
}
public TestClass(int a)
{
_A = a;
}
[XmlAttribute("a")]
public int A
{
get { return _A; }
set { _A = value; _B = null; }
}
[XmlIgnore]
public int B
{
get { if (_B == null) Recalculate(); return _B; }
set { _B = value; }
}
private void Recalculate()
{
_B = _A + 1;
}
}