Наследование: Specification
 private void cmbSpecificationType_SelectedIndexChanged(object sender, EventArgs e)
 {
     String text = cmbSpecificationType.SelectedItem as String;
     if (isNewSpecification)
     {
         if ("Nominal".Equals(text))
             _specificaionItem = new Nominal();
         else if ("Feature".Equals(text))
             _specificaionItem = new Feature();
         else if ("Characteristic".Equals(text))
             _specificaionItem = new Characteristic();
         else if ("Guaranteed".Equals(text))
             _specificaionItem = new Guaranteed();
         else if ("Typical".Equals(text))
             _specificaionItem = new Typical();
         else if ("Specification Group".Equals(text))
             _specificaionItem = new SpecificationGroup();
     }
     if( _specificaionItem is Specification )
         specificationControl.Specification = _specificaionItem as Specification;
     else
         specificationGroupControl.SpecificationGroup = _specificaionItem as SpecificationGroup;
     SetControlStates();
 }
 public static bool LoadFromFile(string fileName, out Feature obj)
 {
     Exception exception;
     return LoadFromFile(fileName, out obj, out exception);
 }
 /// <summary>
 /// Deserializes xml markup from file into an Feature object
 /// </summary>
 /// <param name="fileName">string xml file to load and deserialize</param>
 /// <param name="obj">Output Feature object</param>
 /// <param name="exception">output Exception value if deserialize failed</param>
 /// <returns>true if this Serializer can deserialize the object; otherwise, false</returns>
 public static bool LoadFromFile(string fileName, out Feature obj, out Exception exception)
 {
     exception = null;
     obj = default(Feature);
     try
     {
         obj = LoadFromFile(fileName);
         return true;
     }
     catch (Exception ex)
     {
         exception = ex;
         return false;
     }
 }
 public static bool Deserialize(string input, out Feature obj)
 {
     Exception exception;
     return Deserialize(input, out obj, out exception);
 }
 /// <summary>
 /// Deserializes workflow markup into an Feature object
 /// </summary>
 /// <param name="input">string workflow markup to deserialize</param>
 /// <param name="obj">Output Feature object</param>
 /// <param name="exception">output Exception value if deserialize failed</param>
 /// <returns>true if this Serializer can deserialize the object; otherwise, false</returns>
 public static bool Deserialize(string input, out Feature obj, out Exception exception)
 {
     exception = null;
     obj = default(Feature);
     try
     {
         obj = Deserialize(input);
         return true;
     }
     catch (Exception ex)
     {
         exception = ex;
         return false;
     }
 }