| File: PackageArtifactModel.cs | Web Access |
| Project: src\arcade\src\Microsoft.DotNet.Build.Manifest\Microsoft.DotNet.Build.Manifest.csproj (Microsoft.DotNet.Build.Manifest) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Linq; using System.Xml.Linq; namespace Microsoft.DotNet.Build.Manifest { public class PackageArtifactModel : ArtifactModel { private static readonly string[] RequiredAttributes = { nameof(Id), nameof(Version) }; private static readonly string[] AttributeOrder = RequiredAttributes.Concat(new[] { nameof(OriginBuildName) }).ToArray(); public string Version { get { return Attributes.GetOrDefault(nameof(Version)); } set { Attributes[nameof(Version)] = value; } } public string OriginBuildName { get { return Attributes.GetOrDefault(nameof(OriginBuildName)); } set { Attributes[nameof(OriginBuildName)] = value; } } public bool? CouldBeStable { get { string val = Attributes.GetOrDefault(nameof(CouldBeStable)); if (!string.IsNullOrEmpty(val)) { return bool.Parse(val); } return null; } set { if (!value.HasValue) { Attributes.Remove(nameof(CouldBeStable)); } else { Attributes[nameof(CouldBeStable)] = value.Value.ToString(); } } } public override string ToString() => $"Package {Id} {Version}"; public override XElement ToXml() => new XElement( "Package", Attributes .ThrowIfMissingAttributes(RequiredAttributes) .CreateXmlAttributes(AttributeOrder)); public static PackageArtifactModel Parse(XElement xml) => new PackageArtifactModel { Attributes = xml .CreateAttributeDictionary() .ThrowIfMissingAttributes(RequiredAttributes) }; } }