< Summary

Class:Azure.DigitalTwins.Core.Serialization.BasicDigitalTwin
Assembly:Azure.DigitalTwins.Core
File(s):C:\Git\azure-sdk-for-net\sdk\digitaltwins\Azure.DigitalTwins.Core\src\Serialization\BasicDigitalTwin.cs
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:100
Line coverage:0% (0 of 4)
Covered branches:0
Total branches:0

Metrics

MethodCyclomatic complexity Line coverage Branch coverage
get_Id()-0%100%
get_ETag()-0%100%
get_Metadata()-0%100%
get_CustomProperties()-0%100%

File(s)

C:\Git\azure-sdk-for-net\sdk\digitaltwins\Azure.DigitalTwins.Core\src\Serialization\BasicDigitalTwin.cs

#LineLine coverage
 1// Copyright (c) Microsoft Corporation. All rights reserved.
 2// Licensed under the MIT License.
 3
 4using System.Collections.Generic;
 5using System.Text.Json.Serialization;
 6
 7namespace Azure.DigitalTwins.Core.Serialization
 8{
 9    /// <summary>
 10    /// An optional, helper class for deserializing a digital twin.
 11    /// </summary>
 12    /// <remarks>
 13    /// For more samples, see <see href="https://github.com/Azure/azure-sdk-for-net/tree/master/sdk/digitaltwins/Azure.D
 14    /// </remarks>
 15    /// <example>
 16    /// Here's an example of  how to use the BasicDigitalTwin helper class to serialize and create a digital twin.
 17    ///
 18    /// <code snippet="Snippet:DigitalTwinsSampleCreateBasicTwin">
 19    /// // Create digital twin with component payload using the BasicDigitalTwin serialization helper
 20    ///
 21    /// var basicTwin = new BasicDigitalTwin
 22    /// {
 23    ///     Id = basicDtId,
 24    ///     // model Id of digital twin
 25    ///     Metadata = { ModelId = modelId },
 26    ///     CustomProperties =
 27    ///     {
 28    ///         // digital twin properties
 29    ///         { &quot;Prop1&quot;, &quot;Value1&quot; },
 30    ///         { &quot;Prop2&quot;, 987 },
 31    ///         // component
 32    ///         {
 33    ///             &quot;Component1&quot;,
 34    ///             new ModelProperties
 35    ///             {
 36    ///                 // component properties
 37    ///                 CustomProperties =
 38    ///                 {
 39    ///                     { &quot;ComponentProp1&quot;, &quot;Component value 1&quot; },
 40    ///                     { &quot;ComponentProp2&quot;, 123 },
 41    ///                 },
 42    ///             }
 43    ///         },
 44    ///     },
 45    /// };
 46    ///
 47    /// string basicDtPayload = JsonSerializer.Serialize(basicTwin);
 48    ///
 49    /// await client.CreateDigitalTwinAsync(basicDtId, basicDtPayload);
 50    /// Console.WriteLine($&quot;Created digital twin &apos;{basicDtId}&apos;.&quot;);
 51    /// </code>
 52    ///
 53    /// Here's an example of  how to use the BasicDigitalTwin helper class to get and deserialize a digital twin.
 54    ///
 55    /// <code snippet="Snippet:DigitalTwinsSampleGetBasicDigitalTwin">
 56    /// Response&lt;string&gt; getBasicDtResponse = await client.GetDigitalTwinAsync(basicDtId);
 57    /// if (getBasicDtResponse.GetRawResponse().Status == (int)HttpStatusCode.OK)
 58    /// {
 59    ///     BasicDigitalTwin basicDt = JsonSerializer.Deserialize&lt;BasicDigitalTwin&gt;(getBasicDtResponse.Value);
 60    ///
 61    ///     // Must cast Component1 as a JsonElement and get its raw text in order to deserialize it as a dictionary
 62    ///     string component1RawText = ((JsonElement)basicDt.CustomProperties[&quot;Component1&quot;]).GetRawText();
 63    ///     IDictionary&lt;string, object&gt; component1 = JsonSerializer.Deserialize&lt;IDictionary&lt;string, object&g
 64    ///
 65    ///     Console.WriteLine($&quot;Retrieved and deserialized digital twin {basicDt.Id}:\n\t&quot; +
 66    ///         $&quot;ETag: {basicDt.ETag}\n\t&quot; +
 67    ///         $&quot;Prop1: {basicDt.CustomProperties[&quot;Prop1&quot;]}\n\t&quot; +
 68    ///         $&quot;Prop2: {basicDt.CustomProperties[&quot;Prop2&quot;]}\n\t&quot; +
 69    ///         $&quot;ComponentProp1: {component1[&quot;ComponentProp1&quot;]}\n\t&quot; +
 70    ///         $&quot;ComponentProp2: {component1[&quot;ComponentProp2&quot;]}&quot;);
 71    /// }
 72    /// </code>
 73    /// </example>
 74    public class BasicDigitalTwin
 75    {
 76        /// <summary>
 77        /// The unique Id of the digital twin in a digital twins instance. This field is present on every digital twin.
 78        /// </summary>
 79        [JsonPropertyName("$dtId")]
 080        public string Id { get; set; }
 81
 82        /// <summary>
 83        /// A string representing a weak ETag for the entity that this request performs an operation against, as per RFC
 84        /// </summary>
 85        [JsonPropertyName("$etag")]
 086        public string ETag { get; set; }
 87
 88        /// <summary>
 89        /// Information about the model a digital twin conforms to. This field is present on every digital twin.
 90        /// </summary>
 91        [JsonPropertyName("$metadata")]
 092        public DigitalTwinMetadata Metadata { get; set; } = new DigitalTwinMetadata();
 93
 94        /// <summary>
 95        /// Additional properties of the digital twin. This field will contain any properties of the digital twin that a
 96        /// </summary>
 97        [JsonExtensionData]
 098        public IDictionary<string, object> CustomProperties { get; set; } = new Dictionary<string, object>();
 99    }
 100}