¿Cómo hacer que un tipo de valor sea anulable con .NET XmlSerializer?

Supongamos que tengo este objeto:

[Serializable]
public class MyClass
{
    public int Age { get; set; }
    public int MyClassB { get; set; }
}
[Serializable]
public class MyClassB
{
    public int RandomNumber { get; set; }
}

The XmlSerializer serializará el objeto así:

<MyClass>
    <Age>0</age>
    <MyClassB>
        <RandomNumber>4234</RandomNumber>
    </MyClassB>
</MyClass>

¿Cómo puedo hacer que la propiedad sea nula? IE: para no serializar la propiedad Age cuando está por debajo de 0?

Intenté con Nullable, pero serializa mi objeto así:

<MyClass>
    <Age d5p1:nil="true" />
    <MyClassB>
        <RandomNumber>4234</RandomNumber>
    </MyClassB>
</MyClass>    

Al leer la documentación de MSDN encontré esto:

No puede aplicar la propiedad IsNullable a un miembro escrito como un tipo de valor porque un tipo de valor no puede contener nullNothingnullptra referencia nula (Nothing en Visual Basic). Además, no puede establecer esta propiedad en falso para los tipos de valores anulables. Cuando dichos tipos son nulos, nada de referencia nula (Nada en Visual Basic), se serializarán configurando xsi: nil en verdadero.

fuente:http: //msdn.microsoft.com/en-us/library/system.xml.serialization.xmlelementattribute.isnullable.asp

Entiendo que un tipo de valor no se puede establecer en nulo. Un tipo de valor siempre se establece en algo. La serialización no puede tomar la decisión de serializarla o no en función de su valor actual.

Intenté con los atributos, pero no funcionó. Intenté crear un objeto agecontainer y manipular su serialización con atributos, pero no funcionó.

Lo que realmente quiero es:

<MyClass>
    <MyClassB>
        <RandomNumber>4234</RandomNumber>
    </MyClassB>
</MyClass>

Cuando la edad de la propiedad es inferior a 0 (cero).

arece que tendrá que implementar una serialización personalizad

Sí, eso es lo que yo también pensé, pero me gustaría escapar sin eso.

En la aplicación, el objeto es mucho más complejo, y me gustaría no manejar la serialización yo mismo.

Respuestas a la pregunta(6)

Su respuesta a la pregunta