2 // BuildProperty.cs: Represents a property
5 // Marek Sieradzki (marek.sieradzki@gmail.com)
7 // (C) 2005 Marek Sieradzki
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34 namespace Microsoft.Build.BuildEngine {
35 public class BuildProperty : IBuildProperty {
37 XmlElement propertyElement;
38 XmlAttribute condition;
42 PropertyType propertyType;
44 public BuildProperty ()
49 public BuildProperty (string propertyName,
52 this.name = propertyName;
53 this.value = propertyValue;
56 public BuildProperty Clone (bool deepClone)
60 bp = new BuildProperty ();
61 bp.condition = this.condition;
62 bp.finalValue = this.finalValue;
64 bp.propertyElement = this.propertyElement;
65 bp.propertyType = this.propertyType;
66 bp.value = this.value;
71 public static implicit operator string (BuildProperty propertyToCast)
73 if (propertyToCast == null)
74 throw new ArgumentNullException ("propertyToCast");
75 return propertyToCast.ToString ();
78 public override string ToString ()
80 if (finalValue != null)
87 internal void BindToXml (XmlElement propertyElement)
89 if (propertyElement == null)
90 throw new ArgumentNullException ("propertyElement");
91 this.propertyElement = propertyElement;
92 this.condition = propertyElement.GetAttributeNode ("Condition");
93 this.name = propertyElement.Name;
94 this.value = propertyElement.InnerText;
97 internal void UpdateXml ()
101 public string Condition {
103 if (condition == null)
106 return condition.Value;
109 if (condition != null)
110 condition.Value = value;
114 public string FinalValue {
116 if (finalValue == null) {
132 public string Value {
141 internal PropertyType PropertyType {
142 get { return propertyType; }
143 set { propertyType = value; }
147 internal enum PropertyType {