序列化验证属性列表时出错

An error when serializing a list of validationattribute

我正在尝试序列化 (ValidationAttribute) 列表,如下所示:

RequiredAttribute tRequired = new RequiredAttribute();
List<ValidationAttribute> ValidationList = new List<ValidationAttribute>();

ValidationList.Add(tRequired);

XmlSerializer tXMLSerializer = new XmlSerializer(typeof(List<ValidationAttribute>));
MemoryStream tMemStream = new MemoryStream();
StreamWriter tStreamWriter = new StreamWriter(tMemStream);

tXMLSerializer.Serialize(tStreamWriter, ValidationList);

(Serialize)函数执行时,会抛出如下异常:

The type System.ComponentModel.DataAnnotations.RequiredAttribute was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically

我想通了。我需要将 (RequiredAttribute) 的类型传递给 XMLSerializer:

RequiredAttribute tRequired = new RequiredAttribute();
List<ValidationAttribute> ValidationList = new List<ValidationAttribute>();

ValidationList.Add(tRequired);

Type[] tExtraTypes = new Type[] { typeof(RequiredAttribute) };

XmlSerializer tXMLSerializer = new XmlSerializer(typeof(List<ValidationAttribute>),tExtraTypes );