DEV Community

Rido
Rido

Posted on • Originally published at blog.rido.dev

DTDL Parser extensions

The DTDL dotnet parser provides and object model to inspect DTDL elements: Telemetry, Properties, Commands, Components and Relationships.

All of these are represented as DTEntityInfo elements that must be used with the appropriate DT* types using casting.

To make it easier the navigation through those types, and by using some C# goodness, I've created this DTDL parser C# extensions:

That can be used as

var model = await new ModelParser().ParseAsync(ReadFile("dtmi/samples/aninterface-1.json"));

Console.WriteLine(model.Id);

foreach (var t in model.Telemetries)
{
    Console.WriteLine($" [T] {t.Name} {t.Schema.Id}");
}

foreach (var p in model.Properties)
{
    Console.WriteLine($" [P] {p.Name} {p.Schema.Id}");
}

foreach (var c in model.Commands)
{
    Console.WriteLine($" [C] {c.Name} {c.Request.Id} {c.Response.Id}");
}
Enter fullscreen mode Exit fullscreen mode

Top comments (2)

Collapse
 
andypiper profile image
Andy Piper

Interesting. Whatโ€™s the MQTT element here?

Collapse
 
andypiper profile image
Andy Piper

I'm going to remove the tag, as there is no clear relationship between the post and the MQTT topic.