私は以下の従業員クラスを持っています。私はこのクラスからxmlを生成する必要があります。そのため、1つのプロパティだけが許可されます。 salary1またはsalary2のいずれかです。C#XMLで選択ノードを生成
salary1は、データベースから取得した場合には、生成されたXMLは、XML Elmentが
は、今私は、生成されたXMLの両方の要素を取得し、生成されたXMLには存在しないべきであるだけsalary1のXMLElementのとsalary2が含まれている必要がありSalary2よりも大きくなります。
salary2がSalary1より大きい場合、生成されるXMLにはsalary2 XMLElementのみが含まれ、salary1 XML Elmentは生成されたXMLには存在しないはずです。
私は選択肢識別子を使用しようとしましたが、理解できませんでした。
public class Employee
{
private int salary;
[XmlIgnore]
public int Salary1 { get; set; }
[XmlIgnore]
public int Salary2 { get; set; }
[XmlAttribute(AttributeName = "Salary")]
public int SalaryToSerialize
{
get
{
salary = Math.Max(this.Salary1, this.Salary2);
return salary;
}
set
{
salary = value;
}
}
}
を、そのままオブジェクトをシリアル化:
パブリッククラスプログラム {
public class Employee
{
public int Salary1 { get; set; }
public int Salary2 { get; set; }
}
public static class Database
{
public static int Salary1 = 100;
public static int Salary2= 50;
}
public static void Main(string[] args)
{
XmlSerializer xsSubmit = new XmlSerializer(typeof(Employee));
Employee subReq;
if (Database.Salary1 > Database.Salary2)
{
subReq = new Employee { Salary1 = Database.Salary1 };
}
else
{
subReq = new Employee { Salary2 = Database.Salary2 };
}
var xml = "";
using (var sww = new StringWriter())
{
using (XmlWriter writer = XmlWriter.Create(sww))
{
xsSubmit.Serialize(writer, subReq);
xml = sww.ToString(); // Your XML
}
}
Console.WriteLine(xml);
Console.ReadLine();
}
}
}
を解決し、INTからいくつかのreasons.Changingデータタイプのために給料のような1つのプロパティを持つことができない私のシナリオは、以下の2つの継承されたクラスSalary1とSalary2と、基本クラスの給与を作ります。次に、DataBaseの基本クラスSalaryにSalary1またはSalary2のいずれかを受け入れるプロパティを設定します。 – jdweng
給与のプロパティを1つしか持たず、条件を満たす適切な値で初期化するのはなぜですか? –