/// <summary>
        /// Sets a new metadata value.  Called by the evaluator only.
        /// Discards predecessor as this information is only useful at design time.
        /// </summary>
        ProjectMetadataInstance IItemDefinition <ProjectMetadataInstance> .SetMetadata(ProjectMetadataElement xml, string evaluatedValue, ProjectMetadataInstance predecessor)
        {
            // No mutability check as this is used during creation (evaluation)
            _metadata = _metadata ?? new CopyOnWritePropertyDictionary <ProjectMetadataInstance>();

            ProjectMetadataInstance metadatum = new ProjectMetadataInstance(xml.Name, evaluatedValue);

            _metadata[xml.Name] = metadatum;

            return(metadatum);
        }
        /// <summary>
        /// Called when a ProjectInstance is created.
        /// </summary>
        /// <remarks>
        /// Assumes that the itemType string originated in a ProjectItemDefinitionElement and therefore
        /// was already validated.
        /// </remarks>
        internal ProjectItemDefinitionInstance(ProjectInstance projectInstance, ProjectItemDefinition itemDefinition)
            : this(projectInstance, itemDefinition.ItemType)
        {
            if (itemDefinition.MetadataCount > 0)
            {
                _metadata = new CopyOnWritePropertyDictionary <ProjectMetadataInstance>(itemDefinition.MetadataCount);
            }

            foreach (ProjectMetadata originalMetadata in itemDefinition.Metadata)
            {
                _metadata.Set(new ProjectMetadataInstance(originalMetadata));
            }
        }
Пример #3
0
 static void Test(CopyOnWritePropertyDictionary <MockValue> a, CopyOnWritePropertyDictionary <MockValue> b, bool expected)
 {
     if (expected)
     {
         // Test equality in both directions
         a.ShouldBe(b);
         b.ShouldBe(a);
     }
     else
     {
         // Test equality in both directions
         a.ShouldNotBe(b);
         b.ShouldNotBe(a);
     }
 }