how para deserializar un nodo xml con un valor y un atributo usando la serialización asp.net

Tengo 4 clases pequeñas para deserializar xml de una encuesta xml entrante, a clases utilizables para construir la encuesta.

ahora, sé cómo establecer una propiedad de una clase, para que coincida con un determinado atributo o elemento en el xml, y si ese elemento es solo una cadena, eso es fácil, pero ¿qué pasa si el elemento también tiene un atributo como en el siguiente ejemplo? @

<Questions>
 <Question id="a guid">
  <AnswerItems>
   <AnswerItem Id="a guid">3</AnswerItem>
   <AnswerItem Id="a guid">2</AnswerItem>
   <AnswerItem Id="a guid">5</AnswerItem>
  </AnswerItems>
 </Question>
</Questions>

la clase de preguntas se vería así:

[Serializable()]
public class Question
{
    [XmlAttribute("Id")]
    public Guid QuestionId { get; set; }

    [XmlArray("AnswerItems")]
    [XmlArrayItem("AnswerItem", typeof(AnswerItem))]
    public AnswerItem[] AnswerItems { get; set; }
}

[Serializable()]
public class AnswerItem
{
    [XmlAttribute("Id")]
    public Guid QuestionId { get; set; }

    // how do i fetch the value of this node? 
    // its not a XmlElement and it's not an XmlValue
}

Ok, entonces el valor de un nodo AnswerItem, eso es lo que quiero obtener también. fácilmente no podría usar la clase AnswerItem, y solo usar un XmlArray AnswerItems del tipo String y poner los valores en la matriz, pero luego perdería el atributo Id del AnswerItem.

Respuestas a la pregunta(1)

Su respuesta a la pregunta