【问题标题】:How to assign Mandatory Properties in class object in C#如何在 C# 中的类对象中分配强制属性
【发布时间】:2013-05-13 09:23:46
【问题描述】:

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

作为输出。

现在我有另一个方法 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>

作为输出。

所以, 我只想将 NAME、AGE 和 CITY 属性用于 calPerson() 方法。我不希望 PERSON 类中的 GENDER 属性。 我只想将 GENDER 属性用于 calGender() 方法。我不想在 PERSON 类中使用 NAME、AGE 和 CITY 属性。

请建议我如何做到这一点...

阿尼尔贾扬蒂。

【问题讨论】:

    标签: c# oop c#-2.0


    【解决方案1】:

    您可以很好地使用内置的序列化程序,如DataContractSerializerXmlSerializer,并使用[XmlIgnore] 属性跳过您不想序列化的任何属性。

    更多详情请参考here

    【讨论】:

      【解决方案2】:

      您是否使用内置的 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

      【讨论】:

        【解决方案3】:
         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()”时使用 PERSON,在“calGender()”中使用 PERSON1

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-07-15
          • 2011-07-04
          • 1970-01-01
          • 1970-01-01
          • 2020-04-21
          • 1970-01-01
          • 1970-01-01
          • 2014-03-20
          相关资源
          最近更新 更多