IListType
IListType is interface for list descriptions.
/// <summary>Describes a single dimension list</summary>
public interface IListType : IDataType, ICyclical, IRangeProvider<ulong>
{
/// <summary>Element type</summary>
IDataTypeBase Element { get; set; }
}
/// <summary>Interface for properties that describe range of elements.</summary>
public interface IRangeProvider<T> where T : struct
{
/// <summary>Minimum number of elements.</summary>
Nullable<T> MinLength { get; set; }
/// <summary>Maximum number of elements.</summary>
Nullable<T> MaxLength { get; set; }
}
ListType is the default implementation.
IListType listType = new ListType
{
Name = Identities.CreateNamespace("Namespace").AppendName("MyList").SetReadOnly(),
Annotations = { },
Description = "",
Nullable = true,
Referable = true,
Element = DataTypes.Int
}.SetReadOnly();
Namespace.MyList : IListType └── Element = int : IIntegerType
ListTypeRequest is request for a list type when sub-requests are needed.
// Create service
IService service = Services.Create((ServiceHandlers.Instance, DataTypeHandlers.Instance));
// Create list request
ListTypeRequest listRequest = new ListTypeRequest
{
Name = Identities.CreateName("MyList"),
Annotations = { },
Description = null,
Nullable = null,
Referable = null,
Element = new DataTypeRequest<IDataTypeBase>(typeof(int))
};
// Request list
IListType listType = service.GetRequired<ListTypeRequest, IListType>(listRequest);
MyList : IListType └── Element = int : IIntegerType
DataTypeRequest<IListType> is a request for listtype by Type.
// Create service
IService service = Services.Create((ServiceHandlers.Instance, DataTypeHandlers.Instance));
// Create list request
DataTypeRequest<IListType> listRequest = new(typeof(List<int>));
// Request list
IListType listType = service.GetRequired<IDataTypeRequest, IListType>(listRequest);
System.Collections.Generic.List`1[[System.Int32]] : IListType └── Element = int : IIntegerType
Default handlers process List<T>, IList<T>, andT[] types on DataTypeRequest<T>.
DataTypeRequest<IListType> listRequest = new(typeof(int[]));
DataTypeRequest<IListType> listRequest = new(typeof(IList<int>));
Full Example
Full example
using System.Collections.Generic;
using Avalanche.DataType;
using Avalanche.Identity;
using Avalanche.Service;
using Avalanche.Utilities;
using static System.Console;
public class listtype
{
public static void Run()
{
{
// <01>
IListType listType = new ListType
{
Name = Identities.CreateNamespace("Namespace").AppendName("MyList").SetReadOnly(),
Annotations = { },
Description = "",
Nullable = true,
Referable = true,
Element = DataTypes.Int
}.SetReadOnly();
// </01>
// Print
WriteLine(listType.PrintTree());
}
{
// <03>
// Create service
IService service = Services.Create((ServiceHandlers.Instance, DataTypeHandlers.Instance));
// Create list request
ListTypeRequest listRequest = new ListTypeRequest
{
Name = Identities.CreateName("MyList"),
Annotations = { },
Description = null,
Nullable = null,
Referable = null,
Element = new DataTypeRequest<IDataTypeBase>(typeof(int))
};
// Request list
IListType listType = service.GetRequired<ListTypeRequest, IListType>(listRequest);
// </03>
// Print
WriteLine(listType.PrintTree());
}
{
// <04>
// Create service
IService service = Services.Create((ServiceHandlers.Instance, DataTypeHandlers.Instance));
// Create list request
DataTypeRequest<IListType> listRequest = new(typeof(List<int>));
// Request list
IListType listType = service.GetRequired<IDataTypeRequest, IListType>(listRequest);
// </04>
// Print
WriteLine(listType.PrintTree());
}
{
// Create service
IService service = Services.Create((ServiceHandlers.Instance, DataTypeHandlers.Instance));
// Create list request
// <05>
DataTypeRequest<IListType> listRequest = new(typeof(int[]));
// </05>
// Request list
IListType listType = service.GetRequired<IDataTypeRequest, IListType>(listRequest);
// Print
WriteLine(listType.PrintTree());
}
{
// Create service
IService service = Services.Create((ServiceHandlers.Instance, DataTypeHandlers.Instance));
// Create list request
// <06>
DataTypeRequest<IListType> listRequest = new(typeof(IList<int>));
// </06>
// Request list
IListType listType = service.GetRequired<IDataTypeRequest, IListType>(listRequest);
// Print
WriteLine(listType.PrintTree());
}
}
}