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.