如何在C#中的类对象中分配强制属性

时间:2013-05-13 09:23:47

标签: c# oop c#-2.0

我正在使用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。

3 个答案:

答案 0 :(得分:2)

您可以很好地使用内置序列化程序,如DataContractSerializerXmlSerializer,并使用[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

相关问题