Dependencies/Assemblies/Microsoft365DSC.Intune.xml

<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Microsoft365DSC.Intune</name>
    </assembly>
    <members>
        <member name="T:Microsoft365DSC.Intune.SettingInstanceInfo">
             <summary>
             Lightweight representation of a setting instance coming from the Graph API response.
             The PowerShell version works with raw PSObjects or Hashtables; this C# model normalizes
             the data to avoid repeated reflection or dictionary lookups during recursive traversal.
             
             <para><b>AdditionalProperties handling:</b></para>
             Graph SDK objects store most of the interesting data in <c>AdditionalProperties</c>,
             which is only accessible via reflection (NonPublic | Instance). Rather than doing
             reflection on every recursive call, this model flattens the data at construction time.
             The <see cref="T:Microsoft365DSC.Intune.SettingInstanceMapper"/> handles the extraction from both Graph objects
             and Hashtables (the latter from already-converted data).
             </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingInstanceInfo.SettingDefinitionId">
            <summary>The settingDefinitionId of this instance.</summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingInstanceInfo.ODataType">
            <summary>The @odata.type of this instance.</summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingInstanceInfo.SimpleSettingValue">
            <summary>For SimpleSettingInstance: the value object containing @odata.type and value.</summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingInstanceInfo.ChoiceSettingValue">
            <summary>For ChoiceSettingInstance: the choice setting value (value + children).</summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingInstanceInfo.ChoiceSettingCollectionValues">
            <summary>For ChoiceSettingCollectionInstance: the collection of choice values.</summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingInstanceInfo.GroupSettingCollectionValue">
            <summary>For GroupSettingCollectionInstance: the array of group values, each containing children.</summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingInstanceInfo.SimpleSettingCollectionValue">
            <summary>For SimpleSettingCollectionInstance: the array of simple values.</summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingSimpleValue">
            <summary>Represents a simple setting value (string or int).</summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingChoiceValue">
            <summary>Represents a choice setting value with a selected value and children.</summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingGroupValue">
            <summary>Represents one group in a GroupSettingCollection, containing child instances.</summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingInstanceMapper">
             <summary>
             Maps raw Graph API response objects (PSObject, Hashtable, or Graph SDK types) to
             <see cref="T:Microsoft365DSC.Intune.SettingInstanceInfo"/> for use in the exporter.
             
             The "IsRoot" distinction from the PowerShell code is handled here: root instances
             store their data in <c>AdditionalProperties</c>, while child instances have the data
             at the top level.
             </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingInstanceMapper.FromObject(System.Object,System.Boolean)">
            <summary>
            Maps a raw setting instance to <see cref="T:Microsoft365DSC.Intune.SettingInstanceInfo"/>.
            </summary>
            <param name="instance">The setting instance (Graph SDK object or Hashtable).</param>
            <param name="isRoot">True if this is a root-level instance (data in AdditionalProperties).</param>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingInstanceMapper.GetAdditionalProperty(System.Object,System.String)">
            <summary>
            Gets a property from AdditionalProperties on Graph SDK objects.
            For Graph SDK objects, AdditionalProperties is a non-public IDictionary&lt;string, object&gt; accessed via reflection.
            For Hashtables, falls back to nested "AdditionalProperties" key.
            </summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingCatalogPolicyExporter">
             <summary>
             C# port of Export-IntuneSettingCatalogPolicySettings.
             Converts Graph API setting response data into flat DSC parameter hashtables.
             
             <para><b>Design notes:</b></para>
             <list type="bullet">
             <item>The PowerShell version operates on raw PSObjects/Hashtables and accesses
             <c>AdditionalProperties</c> directly on Graph SDK objects. This C# version pre-maps
             all data to <see cref="T:Microsoft365DSC.Intune.SettingInstanceInfo"/> and <see cref="T:Microsoft365DSC.Intune.SettingDefinitionInfo"/>
             at the boundary, then works purely with C# models internally.</item>
             <item>Parts that require Graph API calls (e.g., fetching setting templates) remain in
             PowerShell. This class only handles the data transformation.</item>
             <item>The recursive export logic is preserved exactly as in PowerShell, including the
             GroupSettingCollection flattening heuristics.</item>
             </list>
             </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingCatalogPolicyExporter.Export(System.Collections.Generic.IList{System.Object},System.Collections.Hashtable,System.Collections.Generic.IList{System.Object},System.Boolean)">
            <summary>
            Exports settings from Graph API response into a flat hashtable of DSC parameters.
            Entry point corresponding to the 'Start' parameter set in PowerShell.
            </summary>
            <param name="settings">
            Array of setting objects from the Graph API, each with SettingInstance and SettingDefinitions.
            These are the raw Graph SDK objects or Hashtables.
            </param>
            <param name="returnHashtable">
            Hashtable to store the exported DSC parameters.
            </param>
            <param name="allSettingDefinitions">
            All setting definitions for the policy (pre-mapped). If empty, definitions are extracted from settings.
            </param>
            <param name="containsDeviceAndUserSettings">
            True if the policy has separate device_ and user_ prefixed settings.
            </param>
            <returns>A hashtable with the exported DSC parameters.</returns>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingCatalogPolicyExporter.ExportSettingInstance(Microsoft365DSC.Intune.SettingInstanceInfo,System.Collections.Generic.List{Microsoft365DSC.Intune.SettingDefinitionInfo},System.Collections.Generic.List{Microsoft365DSC.Intune.SettingDefinitionInfo},System.Collections.Hashtable)">
            <summary>
            Recursively exports a setting instance into the return hashtable.
            Corresponds to the 'Setting' parameter set in the PowerShell version.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingCatalogPolicyExporter.ResolveChoiceOptionValue(Microsoft365DSC.Intune.SettingDefinitionInfo,System.String)">
            <summary>
            Resolves a choice option value from its itemId.
            Mirrors the PowerShell logic: look up optionValue.value, fall back to stripping prefix if it contains '=' or '{}'.
            </summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingExportItem">
            <summary>
            A pre-mapped setting export item containing a setting instance and its definitions.
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingExportItem.SettingInstance">
            <summary>The setting instance (pre-mapped from Graph response).</summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingExportItem.SettingDefinitions">
            <summary>The setting definitions for this particular setting (pre-mapped).</summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingCatalogPolicySettingBuilder">
             <summary>
             C# port of <c>Get-IntuneSettingCatalogPolicySetting</c> and <c>Get-IntuneSettingCatalogPolicySettingInstanceValue</c>.
             Builds the Settings Catalog policy body (array of setting instances) from DSC parameters and setting templates.
             
             <para><b>Architecture:</b></para>
             <list type="bullet">
             <item>The Graph API call to fetch setting templates remains in PowerShell.</item>
             <item>This class receives the raw Graph SDK template objects and the DSC parameter hashtable.</item>
             <item>All template/definition objects are mapped to C# models at the boundary via <see cref="T:Microsoft365DSC.Intune.SettingTemplateMapper"/>
             and <see cref="T:Microsoft365DSC.Intune.SettingDefinitionMapper"/>, then the builder works purely with C# models.</item>
             <item>Value resolution delegates to <see cref="M:Microsoft365DSC.Intune.SettingValueResolver.Resolve(System.String,Microsoft365DSC.Intune.SettingDefinitionInfo,System.Collections.Generic.List{Microsoft365DSC.Intune.SettingDefinitionInfo},System.Collections.Hashtable)"/> (already ported).</item>
             <item>CIM instances from DSC parameters are handled via direct <c>CimInstance</c> access.</item>
             </list>
             </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingCatalogPolicySettingBuilder.Build(System.Collections.Generic.IList{System.Object},System.Collections.Hashtable,System.Boolean)">
            <summary>
            Builds the Settings Catalog policy body from DSC parameters and setting templates.
            Entry point called from PowerShell after template fetching.
            </summary>
            <param name="settingTemplatesFromGraph">
            Raw Graph SDK objects from <c>Get-MgBetaDeviceManagementConfigurationPolicyTemplateSettingTemplate</c>.
            </param>
            <param name="dscParams">The DSC parameters hashtable (Identity/DisplayName/Description already removed).</param>
            <param name="containsDeviceAndUserSettings">True if the policy has separate device_ and user_ prefixed settings.</param>
            <returns>Array of Hashtables, each representing a <c>deviceManagementConfigurationSetting</c>.</returns>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingCatalogPolicySettingBuilder.BuildCore(System.Collections.Generic.List{Microsoft365DSC.Intune.SettingTemplateInfo},System.Collections.Hashtable)">
            <summary>
            Core build logic that processes setting templates and produces setting instance Hashtables.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingCatalogPolicySettingBuilder.BuildDeviceAndUserSettings(System.Collections.Generic.List{Microsoft365DSC.Intune.SettingTemplateInfo},System.Collections.Hashtable)">
            <summary>
            Handles policies with separate device and user settings.
            Splits templates by prefix, extracts CIM-based DSC params for each scope, builds separately.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingCatalogPolicySettingBuilder.BuildSettingInstanceValue(System.Collections.Hashtable,Microsoft365DSC.Intune.SettingDefinitionInfo,Microsoft365DSC.Intune.SettingInstanceTemplateInfo,System.Collections.Generic.List{Microsoft365DSC.Intune.SettingDefinitionInfo},System.Collections.Generic.List{Microsoft365DSC.Intune.SettingDefinitionInfo},System.String,System.String,System.String,System.String,System.String,System.Int32)">
             <summary>
             Recursive method that builds a setting instance value subtree.
             Mirrors <c>Get-IntuneSettingCatalogPolicySettingInstanceValue</c> exactly.
             
             Handles 5 setting types:
             1. GroupSettingCollectionInstance / SettingGroupCollectionDefinition
             2. ChoiceSettingInstance / ChoiceSettingDefinition
             3. ChoiceSettingCollectionInstance / ChoiceSettingCollectionDefinition
             4. SimpleSettingCollectionInstance / SimpleSettingCollectionDefinition
             5. Default (Simple settings: Integer/String)
             </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingCatalogPolicySettingBuilder.FindChildDefinitions(System.Collections.Generic.List{Microsoft365DSC.Intune.SettingDefinitionInfo},System.String)">
            <summary>
            Finds child setting definitions that depend on the given parent setting ID.
            Checks both <c>dependentOn.parentSettingId</c> and <c>options.dependentOn.parentSettingId</c>.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingCatalogPolicySettingBuilder.ResolveCurrentDscParams(System.Collections.Hashtable,System.String,System.Int32,System.Int32)">
            <summary>
            Resolves the current DSC params for the current iteration of a multi-instance group.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingCatalogPolicySettingBuilder.FindCimInstancesByClassName(System.Collections.Hashtable,System.String)">
            <summary>
            Scans DSCParams values for CimInstance objects matching the expected CIM class name.
            Matches exact class name or alternate <c>{name}_Intune*</c> pattern.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingCatalogPolicySettingBuilder.ExtractCimPropertiesModifiedOnly(Microsoft.Management.Infrastructure.CimInstance)">
            <summary>
            Extracts properties from a CimInstance, keeping only modified values.
            Property names are PascalCase. Nested CimInstances are preserved as-is for recursive processing.
            Mirrors the PS logic: <c>foreach ($property in $instance.CimInstanceProperties) { if ($property.IsValueModified) ... }</c>
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingCatalogPolicySettingBuilder.ExtractCimPropertiesCamelCase(System.Object)">
            <summary>
            Extracts properties from a CimInstance (or PSObject wrapping one) with camelCase property names.
            Filters only modified values and excludes PSComputerName.
            Mirrors <c>Convert-M365DSCDRGComplexTypeToHashtable -SingleLevel -ExcludeUnchangedProperties</c>.
            </summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingDefinitionOption">
            <summary>
            Represents a single option in a ChoiceSetting definition.
            Maps from AdditionalProperties.options[] on Graph SettingDefinition objects.
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingDefinitionOption.ItemId">
            <summary>
            The unique identifier for this option (e.g., "device_vendor_msft_policy_config_..._enabled").
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingDefinitionOption.OptionValue">
            <summary>
            The option value object containing the actual value and its OData type.
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingDefinitionOption.DependentOnParentSettingIds">
            <summary>
            DependentOn entries specific to this option.
            Maps from AdditionalProperties.options[].dependentOn[].parentSettingId.
            </summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.OptionValue">
            <summary>
            Represents the value portion of a setting definition option.
            Maps from AdditionalProperties.options[].optionValue.
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.OptionValue.ODataType">
            <summary>
            The OData type of the option value (e.g., "#microsoft.graph.deviceManagementConfigurationStringSettingValue").
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.OptionValue.Value">
            <summary>
            The actual value of the option (e.g., "0", "1", "enabled").
            </summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingValueDefinition">
            <summary>
            Represents the valueDefinition portion of a setting definition.
            Maps from AdditionalProperties.valueDefinition on Graph SettingDefinition objects.
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingValueDefinition.ODataType">
            <summary>
            The OData type of the value definition (e.g., "#microsoft.graph.deviceManagementConfigurationStringSettingValueDefinition").
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingValueDefinition.IsSecret">
            <summary>
            Whether this value definition represents a secret value.
            </summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingInstanceTemplateInfo">
             <summary>
             Internal representation of a Setting Instance Template from the Microsoft Graph API.
             These templates define the schema/structure for setting instances in Settings Catalog policies.
             
             The PowerShell code accesses these as <c>$settingTemplate.SettingInstanceTemplate</c> objects
             returned by <c>Get-MgBetaDeviceManagementConfigurationPolicyTemplateSettingTemplate</c>.
             
             Key properties live in <c>AdditionalProperties</c> on Graph SDK objects, requiring reflection
             to access. This model normalizes the data at the boundary layer.
             </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingInstanceTemplateInfo.SettingDefinitionId">
            <summary>The setting definition ID this template targets.</summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingInstanceTemplateInfo.SettingInstanceTemplateId">
            <summary>The unique template ID for this setting instance.</summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingInstanceTemplateInfo.ODataType">
            <summary>
            The OData type of the instance template (e.g., <c>#microsoft.graph.deviceManagementConfigurationGroupSettingCollectionInstanceTemplate</c>).
            Extracted from <c>AdditionalProperties['@odata.type']</c>.
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingInstanceTemplateInfo.ValueTemplateODataType">
            <summary>
            The OData type of the value template, already transformed from <c>ValueTemplate</c> to <c>Value</c>.
            For example: <c>#microsoft.graph.deviceManagementConfigurationChoiceSettingValue</c>.
            Null if no value template exists (e.g., GroupSettingCollection without explicit value template).
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingInstanceTemplateInfo.ValueTemplateId">
            <summary>
            The <c>settingValueTemplateId</c> from the value template.
            Null if the value template has no ID or if the ID is an array
            (edge case: ThreatTypeSettings in IntuneAntivirusPolicyLinux).
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingInstanceTemplateInfo.Children">
            <summary>
            Child instance templates from the value template's <c>children</c> array.
            Used for GroupSettingCollection and ChoiceSetting children.
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingInstanceTemplateInfo.SettingValueName">
            <summary>
            The computed value name derived from the OData type.
            For GroupSettingCollectionInstance -> <c>groupSettingCollectionValue</c>.
            Stored to avoid recomputing during recursive traversal.
            </summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingTemplateInfo">
            <summary>
            Wraps a setting template from the Graph API, containing both the instance template and its definitions.
            Corresponds to the objects returned by <c>Get-MgBetaDeviceManagementConfigurationPolicyTemplateSettingTemplate</c>.
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingTemplateInfo.SettingInstanceTemplate">
            <summary>The setting instance template with schema information.</summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingTemplateInfo.SettingDefinitions">
            <summary>The setting definitions associated with this template.</summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingInstanceTemplateMapper">
             <summary>
             Maps raw Graph API SettingInstanceTemplate objects to <see cref="T:Microsoft365DSC.Intune.SettingInstanceTemplateInfo"/>.
             
             The template objects have a dual nature:
             <list type="bullet">
             <item>Root templates (from <c>$settingTemplate.SettingInstanceTemplate</c>): most data in <c>AdditionalProperties</c></item>
             <item>Child templates (from value template's <c>children</c>): data at top level (plain dictionaries)</item>
             </list>
             </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingInstanceTemplateMapper.FromGraphObject(System.Object,System.Boolean)">
            <summary>
            Maps a Graph SettingInstanceTemplate object to <see cref="T:Microsoft365DSC.Intune.SettingInstanceTemplateInfo"/>.
            </summary>
            <param name="template">The raw Graph SDK object, PSObject, or Hashtable.</param>
            <param name="isRoot">
            True for root-level templates where OData type and value templates are in AdditionalProperties.
            False for child templates where data is at the top level.
            </param>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingTemplateMapper">
            <summary>
            Maps raw Graph API setting template objects to <see cref="T:Microsoft365DSC.Intune.SettingTemplateInfo"/>.
            These are the objects returned by <c>Get-MgBetaDeviceManagementConfigurationPolicyTemplateSettingTemplate</c>.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingTemplateMapper.FromGraphObject(System.Object)">
            <summary>
            Maps a single setting template from the Graph API.
            Extracts <c>SettingInstanceTemplate</c> and <c>SettingDefinitions</c> properties.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingTemplateMapper.FromGraphObjects(System.Collections.Generic.IEnumerable{System.Object})">
            <summary>
            Maps a collection of setting template objects.
            </summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingDefinitionInfo">
            <summary>
            Internal representation of a Microsoft Graph DeviceManagementConfigurationSettingDefinition.
            Avoids a direct dependency on the Microsoft.Graph SDK types.
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingDefinitionInfo.DependentOnParentSettingIds">
            <summary>
            Flattened list of unique parentSettingId values from AdditionalProperties.dependentOn[].parentSettingId.
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingDefinitionInfo.OptionsDependentOnParentSettingIds">
            <summary>
            Flattened list of unique parentSettingId values from AdditionalProperties.options[].dependentOn[].parentSettingId.
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingDefinitionInfo.ODataType">
            <summary>
            The OData type from AdditionalProperties['@odata.type'].
            Used to determine the setting type (e.g., ChoiceSettingDefinition, GroupSettingCollectionDefinition).
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingDefinitionInfo.MaximumCount">
            <summary>
            Maximum number of instances allowed for this setting (from AdditionalProperties.maximumCount).
            Used in GroupSettingCollection logic to determine single vs. multi-instance handling.
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingDefinitionInfo.ChildIds">
            <summary>
            Child setting definition IDs (from AdditionalProperties.childIds).
            Used in Export to find child definitions of a GroupSettingCollection.
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingDefinitionInfo.Options">
            <summary>
            Options for ChoiceSetting definitions (from AdditionalProperties.options[]).
            Each option has an itemId and an optionValue with a value and OData type.
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingDefinitionInfo.ValueDefinition">
            <summary>
            Value definition metadata (from AdditionalProperties.valueDefinition).
            Contains the OData type and isSecret flag.
            </summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingDefinitionMapper">
            <summary>
            Maps Microsoft Graph DeviceManagementConfigurationSettingDefinition objects (passed as PSObject or Hashtable)
            to the internal <see cref="T:Microsoft365DSC.Intune.SettingDefinitionInfo"/> representation.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingDefinitionMapper.FromGraphObject(System.Object)">
            <summary>
            Maps a single Graph SettingDefinition (typically a PSObject or Hashtable) to <see cref="T:Microsoft365DSC.Intune.SettingDefinitionInfo"/>.
            Extracts Id, Name, OffsetUri, and the parentSettingId collections from AdditionalProperties.
            Uses reflection to access properties, avoiding a compile-time dependency on the Graph SDK or Microsoft.CSharp.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingDefinitionMapper.FromGraphObjects(System.Collections.Generic.IEnumerable{System.Object})">
            <summary>
            Maps a collection of Graph SettingDefinition objects to a list of <see cref="T:Microsoft365DSC.Intune.SettingDefinitionInfo"/>.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingDefinitionMapper.ExtractParentSettingIds(System.Collections.Generic.IDictionary{System.String,System.Object},System.String)">
            <summary>
            Extracts parentSettingId values from additionalProperties["dependentOn"][].parentSettingId.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingDefinitionMapper.ExtractOptionsParentSettingIds(System.Collections.Generic.IDictionary{System.String,System.Object})">
            <summary>
            Extracts parentSettingId values from additionalProperties["options"][].dependentOn[].parentSettingId.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingDefinitionMapper.ExtractOptions(System.Collections.Generic.IDictionary{System.String,System.Object})">
            <summary>
            Extracts the options array from AdditionalProperties.
            Each option has an itemId, optionValue (with @odata.type and value), and dependentOn parent setting IDs.
            </summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingsCatalogHelper">
             <summary>
             C# port of the PowerShell module M365DSCIntuneSettingsCatalogUtil.
             Provides deterministic setting name resolution for Intune Settings Catalog definitions.
             
             Each method maps 1:1 to its PowerShell counterpart. Deviations are documented inline.
             </summary>
        </member>
        <member name="F:Microsoft365DSC.Intune.SettingsCatalogHelper.NameSimplificationRules">
             <summary>
             Name simplification rules applied when the setting name was disambiguated (settingsWithSameName.Count > 1).
             Each entry is (wildcardPrefix, wildcardSuffix, searchString, replacementString).
             
             Corresponds to the "switch -wildcard" block in the PowerShell Get-SettingsCatalogSettingName.
             
             Optimization note: The PowerShell version uses a switch with -Wildcard patterns that are evaluated
             sequentially. Here we use a data-driven approach with a list of tuples, which is equivalent but
             more maintainable - adding a new simplification rule requires only one line instead of a new
             switch case block.
             </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingsCatalogHelper.GetSettingName(System.Object,System.Collections.Generic.List{System.Object})">
            <summary>
            Port of Get-SettingsCatalogSettingName.
            Resolves a unique, human-readable setting name for a given setting definition.
            Accepts raw Graph SDK objects and maps them internally.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingsCatalogHelper.GetSettingName(Microsoft365DSC.Intune.SettingDefinitionInfo,System.Collections.Generic.List{Microsoft365DSC.Intune.SettingDefinitionInfo})">
            <summary>
            Port of Get-SettingsCatalogSettingName.
            Resolves a unique, human-readable setting name for a given setting definition.
            Accepts pre-mapped <see cref="T:Microsoft365DSC.Intune.SettingDefinitionInfo"/> objects to avoid repeated reflection.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingsCatalogHelper.GetParentSettingDefinition(Microsoft365DSC.Intune.SettingDefinitionInfo,System.Collections.Generic.List{Microsoft365DSC.Intune.SettingDefinitionInfo})">
            <summary>
            Port of Get-ParentSettingDefinition.
            Finds the parent setting by looking up the first unique parentSettingId
            from either dependentOn or options.dependentOn.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingsCatalogHelper.GetUniqueNameFromMultipleMatches(Microsoft365DSC.Intune.SettingDefinitionInfo,System.String,System.Collections.Generic.List{Microsoft365DSC.Intune.SettingDefinitionInfo})">
            <summary>
            Port of Get-UniqueSettingDefinitionNameFromMultipleMatches.
            Iteratively traverses up the OffsetUri to find a unique prefix for the setting name.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingsCatalogHelper.GetSettingDefinitionNameFromOffsetUri(System.String,System.String,System.Int32)">
             <summary>
             Port of Get-SettingDefinitionNameFromOffsetUri.
             Traverses up the OffsetUri segments to find a distinguishing prefix for the setting name.
             
             Optimization note: Instead of PowerShell array slicing ($arr[0..($arr.Length - 1 - $Skip)])
             which creates new arrays at each step, we use a List and track the effective length via an
             integer index. The algorithm is otherwise identical.
             </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingsCatalogHelper.ApplyNameSimplification(System.String)">
             <summary>
             Applies the name simplification rules that correspond to the PowerShell switch -wildcard block.
             
             Important behavioral note: The PowerShell switch -Wildcard does NOT break after the first match -
             all matching cases are executed sequentially. This C# implementation replicates that behavior by
             iterating through ALL rules and applying every match. This matters for names that could match
             multiple rules (e.g., a name containing both a prefix pattern and a contains pattern like '~SmartScreen_').
             </summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingDSCValueResult">
            <summary>
            Result of resolving a DSC parameter value for a setting definition.
            Corresponds to the hashtable returned by the PowerShell Get-IntuneSettingCatalogPolicySettingDSCValue.
            </summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingDSCValueResult.SettingDefinition">
            <summary>The setting definition that was resolved.</summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingDSCValueResult.SettingValueType">
            <summary>The resolved OData type for the setting value.</summary>
        </member>
        <member name="P:Microsoft365DSC.Intune.SettingDSCValueResult.Value">
            <summary>
            The resolved value. Can be a single string/int or an array (string[]/int[]).
            For ChoiceSetting, this is the itemId. For Simple settings, it is the raw DSC value.
            </summary>
        </member>
        <member name="T:Microsoft365DSC.Intune.SettingValueResolver">
             <summary>
             C# port of Get-IntuneSettingCatalogPolicySettingDSCValue.
             Resolves the value for a given setting definition from the DSC parameters hashtable.
             
             This function does NOT call any Graph API. It operates purely on the pre-fetched
             setting definitions and the DSC parameters provided by the caller.
             
             <para><b>AdditionalProperties handling:</b></para>
             The PowerShell version accesses <c>$SettingDefinition.AdditionalProperties.options</c> directly
             on Graph SDK objects. In this C# port, the setting definitions are pre-mapped to
             <see cref="T:Microsoft365DSC.Intune.SettingDefinitionInfo"/> which extracts all AdditionalProperties during construction
             (using reflection for Graph SDK objects). This avoids repeated reflection access at runtime,
             which would be prohibitively expensive in tight loops.
             </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingValueResolver.Resolve(System.String,Microsoft365DSC.Intune.SettingDefinitionInfo,System.Collections.Generic.List{Microsoft365DSC.Intune.SettingDefinitionInfo},System.Collections.Hashtable)">
            <summary>
            Resolves the DSC parameter value for a setting definition.
            </summary>
            <param name="settingValueType">The OData type hint for the setting value (e.g., contains "Simple", "ChoiceSetting").</param>
            <param name="settingDefinition">The pre-mapped setting definition.</param>
            <param name="allSettingDefinitions">All setting definitions for name resolution.</param>
            <param name="dscParams">The DSC parameters hashtable (case-insensitive).</param>
            <returns>A <see cref="T:Microsoft365DSC.Intune.SettingDSCValueResult"/> or null if the key is not found in DSC params.</returns>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingValueResolver.ResolveFromGraph(System.String,System.Object,System.Collections.Generic.List{System.Object},System.Collections.Hashtable)">
             <summary>
             Overload that accepts Graph objects directly (for callers that haven't pre-mapped).
             Maps the objects internally using <see cref="T:Microsoft365DSC.Intune.SettingDefinitionMapper"/>.
             
             This overload incurs the cost of reflection-based mapping. For bulk operations,
             prefer pre-mapping via <see cref="M:Microsoft365DSC.Intune.SettingDefinitionMapper.FromGraphObjects(System.Collections.Generic.IEnumerable{System.Object})"/> and
             calling the <see cref="M:Microsoft365DSC.Intune.SettingValueResolver.Resolve(System.String,Microsoft365DSC.Intune.SettingDefinitionInfo,System.Collections.Generic.List{Microsoft365DSC.Intune.SettingDefinitionInfo},System.Collections.Hashtable)"/>
             overload.
             </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingValueResolver.ResolveSimpleSettingValue(System.String,Microsoft365DSC.Intune.SettingDefinitionInfo,System.Object)">
            <summary>
            Resolves Simple setting values (string, int, or arrays thereof).
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingValueResolver.ResolveChoiceSettingValue(Microsoft365DSC.Intune.SettingDefinitionInfo,System.Object)">
            <summary>
            Resolves a ChoiceSetting value by looking up the itemId from the options.
            Mirrors the PowerShell logic:
              1. Match by optionValue.value == DSC value
              2. Fallback: match by itemId == "{definitionId}_{dscValue}"
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingValueResolver.ResolveChoiceSettingCollectionValue(Microsoft365DSC.Intune.SettingDefinitionInfo,System.Object)">
            <summary>
            Resolves a ChoiceSettingCollection value by looking up each value's itemId.
            </summary>
        </member>
        <member name="M:Microsoft365DSC.Intune.SettingValueResolver.FindKeyIgnoreCase(System.Collections.Hashtable,System.String)">
            <summary>
            Case-insensitive key lookup in a Hashtable.
            </summary>
        </member>
    </members>
</doc>