blob: b05f0b7d8da176f3aae0f69e6a6a6b3a0117c65a [file] [log] [blame]
using System.Collections.Generic;
using System.Runtime.Serialization;
using BaSys40.Models.Core.AssetAdministrationShell.Generics;
using BaSys40.Models.Core.Extensions.References;
using BaSys40.Models.Core.Constraints;
namespace BaSys40.Models.Core.AssetAdministrationShell.Implementations
{
[DataContract]
public class Argument : IArgument
{
public virtual object Value { get; set; }
public virtual DataType ValueType { get; set; }
public int? Index { get; set; }
public string IdShort { get; set; }
public List<IConstraint> Constraints { get; set; }
public IReference SemanticId { get; set; }
public Argument()
{ }
public Argument(IOperationVariable param, object value)
{
this.ValueType = param.DataType;
this.IdShort = param.IdShort;
this.Index = param.Index;
this.Constraints = param.Constraints;
this.SemanticId = param.SemanticId;
this.Value = value;
this.Constraints = param.Constraints;
}
public T ToObject<T>()
{
return new DataElementValue(Value, ValueType).ToObject<T>();
}
}
[DataContract]
public class Argument<TInnerType> : Argument, IValue<TInnerType>
{
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "valueType")]
public override DataType ValueType => DataType.GetDataTypeFromSystemTypes(typeof(TInnerType));
[DataMember(EmitDefaultValue = false, IsRequired = false, Name = "value")]
public virtual new TInnerType Value
{
get
{
if (base.Value != null)
return (TInnerType)base.Value;
else
return default(TInnerType);
}
set => base.Value = value;
}
}
}