blob: b55c4d582faeb41381fbc4626ed6909063477796 [file] [log] [blame]
using BaSys40.Models.Core.AssetAdministrationShell.Enums;
using BaSys40.Models.Core.AssetAdministrationShell.Generics;
using BaSys40.Models.Core.Constraints;
using BaSys40.Models.Core.Extensions.References;
using BaSys40.Models.Core.Identification;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
namespace BaSys40.Models.Core.AssetAdministrationShell.Implementations
{
[DataContract]
public abstract class SubmodelElement : ISubmodelElement
{
public IReference SemanticId { get; set; }
public List<IConstraint> Constraints { get; set; }
public string IdShort { get; set; }
public string Category { get; set; }
public List<Description> Descriptions { get; set; }
public IReference Parent { get; set; }
public Dictionary<string, string> MetaData { get; set; }
public Kind? Kind { get; set; }
public abstract ModelType ModelType { get; }
public List<IEmbeddedDataSpecification> EmbeddedDataSpecifications { get; set; }
public IConceptDescription ConceptDescription { get; set; }
public SubmodelElement() : this(null)
{ }
[JsonConstructor]
public SubmodelElement(IConceptDescription conceptDescription, params IEmbeddedDataSpecification[] embeddedDataSpecifications)
{
ConceptDescription = conceptDescription;
EmbeddedDataSpecifications = embeddedDataSpecifications?.ToList();
if (ConceptDescription?.EmbeddedDataSpecifications?.Count > 0)
EmbeddedDataSpecifications.AddRange(ConceptDescription.EmbeddedDataSpecifications);
}
}
}