/// <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)); } }
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); } }