// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
+using System;
using System.Xml;
+using Microsoft.Build.Exceptions;
+
+
namespace Microsoft.Build.Construction
{
- public class ProjectImportElement : ProjectElementContainer
+ [System.Diagnostics.DebuggerDisplayAttribute ("Project={Project} Condition={Condition}")]
+ public class ProjectImportElement : ProjectElement
{
internal ProjectImportElement (string project, ProjectRootElement containingProject)
+ : this(containingProject)
{
Project = project;
+ }
+
+ internal ProjectImportElement (ProjectRootElement containingProject)
+ {
ContainingProject = containingProject;
}
- public string Project { get; set; }
+ string project;
+ public string Project { get { return project ?? String.Empty; } set { project = value; } }
internal override string XmlName {
get { return "Import"; }
}
- internal override void Save (XmlWriter writer)
+ internal override void SaveValue (XmlWriter writer)
+ {
+ SaveAttribute (writer, "Project", Project);
+ base.SaveValue (writer);
+ }
+
+ internal override void LoadValue (XmlReader reader)
+ {
+ if (string.IsNullOrWhiteSpace (Project))
+ throw new InvalidProjectFileException (Location, null, "Project attribute is null or empty on an Import element");
+ base.LoadValue (reader);
+ }
+
+ internal override void LoadAttribute (string name, string value)
{
- writer.WriteStartElement (XmlName);
- if (!string.IsNullOrWhiteSpace (Project))
- writer.WriteAttributeString ("Project", Project);
- foreach (var child in Children)
- child.Save (writer);
- writer.WriteEndElement ();
+ switch (name) {
+ case "Project":
+ Project = value;
+ break;
+ default:
+ base.LoadAttribute (name, value);
+ break;
+ }
}
}
}