我正在使用c#工作.Net。在c#类中,想要使用可选属性,比如我有PERSON类,其中包含NAME,AGE,CITY和GENDER等属性。
public class PERSON
{
public string NAME{get; set;};
public int AGE {get; set;}
public string CITY {get; set;}
public string GENDER {get; set;}
}
现在我为NAME,AGE和CITY分配了属性值。
PERSON objper = new PERSON();
objper.NAME="ABC";
objper.AGE="22";
objper.CITY="NYC";
string strresult = calPerson(objper);
现在我将这个PERSON对象'objper'传递给一个方法,该方法以xml格式返回PERSON的属性值,如下所示。我没有传递GENDER属性的值。
public string calPerson(PERSON objPerson)
{
//"<xml><name>abc</name><age>22</age><city>nyc</city><gender></gender></xml>"
return xml formated string.
}
创建xml格式的字符串时,即使没有向其发送任何值,也要使GENDER节点具有空值。
我只想要
<xml>
<name>abc</name><age>22</age><city>nyc</city>
</xml>
作为输出。
现在我有另一个接受PERSON对象的方法calGender()。
objper = new PERSON();
objper.GENDER="male";
public string calGender(PERSON objPerson)
{
//"<xml><name></name><age></age><city></city><gender>male</gender></xml>"
return xml formated string.
}
创建xml格式化字符串时,即使没有向其发送任何值,也会使名称,年龄和城市节点值为null。
我只想要
<xml>
<gender>male</gender>
</xml>
作为输出。
所以, 我想只使用NAME,AGE和CITY属性到calPerson()方法。我不想在PERSON类中使用GENDER属性。 我想仅将gENDER属性用于calGender()方法。我不希望在PERSON类中使用NAME,AGE和CITY属性。
请建议我怎么做......
AnilJayanti。
答案 0 :(得分:2)
您可以很好地使用内置序列化程序,如DataContractSerializer
或XmlSerializer
,并使用[XmlIgnore]
属性跳过您不想序列化的任何属性。
有关详细信息,请参阅here
答案 1 :(得分:1)
您使用的是内置的XML序列化程序吗?如果是这样,请尝试使用相同的名称创建一些其他PERSON
属性,但添加后缀Specified
,例如:
[XmlIgnore]
public bool GENDERSpecified { get { return !String.IsNullOrEmpty(GENDER); } }
这应该指示XMLSerialiser只有在有值的情况下输出GENDER节点。
详情请点击此处: http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx
答案 2 :(得分:0)
public class PERSON
{
public string NAME{get; set;}
public int AGE {get; set;}
public string CITY {get; set;}
}
class PERSON1 : PERSON
{
public string GENDER {get; set;}
}
使用PERSON在“calGender()”中调用“calPerson()”和PERSON1