IXmlSerializable을 구현하는 다음 클래스가 있습니다. WriteXml()을 구현할 때이 클래스의 문자열 멤버가 null 값일 수있는 경우를 처리해야합니다. 이것을 처리하는 가장 좋은 방법은 무엇입니까?IXmlSerializable 인터페이스를 구현할 때 string에 null 값을 처리합니다.
현재 모든 문자열 속성이 빈 문자열 값으로 초기화되는 기본 생성자를 사용하고 있습니다. 이렇게하면 WriteXml()이 호출 될 때 문자열이 null이되지 않습니다.
내가 할 수있는 다른 방법은 XML에서 각 문자열을 작성하기 전에 String.IsNullOrEmpty를 사용하여 검사하는 것입니다.
이 코드를 개선하는 방법에 대한 제안 사항이 있으십니까? 마지막 수단으로 만 IXmlSerializable
를 구현하고 대신 속성을 통해 XML 직렬화를 제어 -
1 :
public sealed class FaxSender : IXmlSerializable
{
#region Public Constants
private const string DEFAULT_CLASS_NAME = "FaxSender";
#endregion Public Constants
#region Public Properties
public string Name { get; set; }
public string Organization { get; set; }
public string PhoneNumber { get; set; }
public string FaxNumber { get; set; }
public string EmailAddress { get; set; }
#endregion Public Properties
#region Public Methods
#region Constructors
public FaxSender()
{
Name = String.Empty;
Organization = String.Empty;
PhoneNumber = String.Empty;
FaxNumber = String.Empty;
EmailAddress = String.Empty;
}
public FaxSender(
string name,
string organization,
string phoneNumber,
string faxNumber,
string emailAddress)
{
Name = name;
Organization = organization;
PhoneNumber = phoneNumber;
FaxNumber = faxNumber;
EmailAddress = emailAddress;
}
#endregion Constructors
#region IXmlSerializable Members
public System.Xml.Schema.XmlSchema GetSchema()
{
throw new NotImplementedException();
}
public void ReadXml(System.Xml.XmlReader reader)
{
throw new NotImplementedException();
}
public void WriteXml(System.Xml.XmlWriter xmlWriter)
{
try
{
// <sender>
xmlWriter.WriteStartElement("sender");
// Write the name of the sender as an element.
xmlWriter.WriteElementString(
"name",
this.Name.ToString(CultureInfo.CurrentCulture));
// Write the organization of the sender as an element.
xmlWriter.WriteElementString(
"organization",
this.Organization.ToString(CultureInfo.CurrentCulture));
// Write the phone number of the sender as an element.
xmlWriter.WriteElementString(
"phone_number",
this.PhoneNumber.ToString(CultureInfo.CurrentCulture));
// Write the fax number of the sender as an element.
xmlWriter.WriteElementString(
"fax_number",
this.FaxNumber.ToString(CultureInfo.CurrentCulture));
// Write the email address of the sender as an element.
xmlWriter.WriteElementString(
"email_address",
this.EmailAddress.ToString(CultureInfo.CurrentCulture));
// </sender>
xmlWriter.WriteEndElement();
}
catch
{
// Rethrow any exceptions.
throw;
}
}
#endregion IXmlSerializable Members
#endregion Public Methods
}
제안 사항이 있으십니까? –