Datasource client

The SDK provides a Datasource client to perform CRUD operations on datasources, also called option lists.

Get datasources

A datasource can be retrieved by name:


IDataSource result = await MClient.DataSources.GetAsync(name);

This returns an IDataSource object, however it's recommended to downcast it to the right type of datasource in the following way:


IHierarchicalDataSource hierachicalDataSource = await MClient.DataSources.GetAsync(name) as IHierarchicalDataSource;


IFlatDataSource flatDataSource = await MClient.DataSources.GetAsync(name) as IFlatDataSource;

It is required to downcast the datasource to the correct type to be able to change the datasource's value. Note that the Type property on IDataSource can be used to identify the correct datasource type at runtime.

Create datasources

To create a hierarchical datasource, an instance needs be created by the factory first. Afterwards, the instance can be saved using the client. The datasource can be used for media types, where every type of media can have more sub-values.

In this example, mp4 is added as a subtype of a video media type.


var dataSource = MClient.DataSourceFactory.CreateHierarchicalDataSource("MediaType");
dataSource.Labels.Add(enUs, "Media type");

var video = new HierarchicalDataSourceValue("Video")
  Labels = { { enUs, "Video" } }

var mp4 = new HierarchicalDataSourceValue("MP4")
  Labels = { { enUs, "mp4" } }

var image = new HierarchicalDataSourceValue("Image")
  Labels = { { enUs, "Image" } }


await MClient.DataSources.CreateAsync(dataSource);

Update datasources

In the following example, a flat colors datasource is extended with the color red:


var dataSource = await MClient.DataSources.GetAsync("Colors") as IFlatDataSource;

var red = new FlatDataSourceValue("Red")
  Labels = { { enUs, "Red" } }

await MClient.DataSources.UpdateAsync(dataSource);

Delete datasources

In the following example, the MediaType datasource is deleted:


await MClient.DataSources.DeleteAsync("MediaType");

Do you have some feedback for us?

If you have suggestions for improving this article,