2013-05-13 55 views
0

我正在使用c#處理.Net。在c#類中想要使用可選屬性,比如我擁有PERSON類,其中包含像NAME,AGE,CITY和GENDER等屬性。如何在C#中的類對象中指定強制屬性

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); 

現在即時通訊傳遞這個人對象「objper」到一個方法,它返回在像below.Im不使數值爲GENDER屬性xml格式的PERSON的屬性值。

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> 

作爲輸出。

現在我有另一種方法calGender()接受PERSON對象。

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> 

作爲輸出。

so, 我只想使用名稱,年齡和城市屬性到calPerson()方法。我不想在PERSON類中使用GENDER屬性。 我只想使用GENDER屬性來調用calGender()方法。我不想在PERSON類中使用NAME,AGE和CITY屬性。

請教我怎麼做這個...

AnilJayanti。

回答

2

您可以很好地使用內置的序列化程序,如DataContractSerializerXmlSerializer,並使用[XmlIgnore]屬性跳過您不想序列化的任何屬性。

欲瞭解更多詳情,請參閱here

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;} 
} 

使用人叫「calPerson()和PERSON1在 「calGender()」

1

您使用的是內置的XML串行器?如果是這樣,嘗試用相同的名字創建一些額外的PERSON屬性,但加後綴Specified,例如:

[XmlIgnore] 
public bool GENDERSpecified { get { return !String.IsNullOrEmpty(GENDER); } } 

這個S應該指示XMLSerialiser只輸出GENDER節點(如果它有一個值)。

全部細節在這裏: http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx

相關問題