1 // Copyright (c) Microsoft. All rights reserved.
2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3 //-----------------------------------------------------------------------
4 // </copyright>
5 // <summary>Interface representing item definition objects for use by the Evaulator.</summary>
6 //-----------------------------------------------------------------------
7 
8 using System;
9 using System.Collections.Generic;
10 using System.Text;
11 using Microsoft.Build.Construction;
12 
13 namespace Microsoft.Build.Evaluation
14 {
15     /// <summary>
16     /// Interface representing item definition objects for use by the Evaulator.
17     /// </summary>
18     /// <typeparam name="M">Type of metadata objects.</typeparam>
19     internal interface IItemDefinition<M> : IMetadataTable
20         where M : class, IMetadatum
21     {
22         /// <summary>
23         /// Gets any metadatum on this item definition with the specified name.
24         /// </summary>
GetMetadata(string name)25         M GetMetadata(string name);
26 
27         /// <summary>
28         /// Adds the specified metadata to the item definition.
29         /// </summary>
SetMetadata(ProjectMetadataElement metadataElement, string evaluatedValue, M predecessor)30         M SetMetadata(ProjectMetadataElement metadataElement, string evaluatedValue, M predecessor);
31     }
32 }
33