Click or drag to resize
Code Example: AllLayersServiceInfo_FeatureServiceLayerInfo

Demonstrates getting detailed ArcGIS Server MapServer metadata for various ArcGISDynamicMapServiceLayer and ArcGISTiledMapServiceLayer web services.

Code Example
All Layers Service Info Feature Service Layer Info

This section contains selected code files from a Visual Studio project that emphasize specific ArcGIS Runtime SDK (Windows Desktop) features. For example: some code examples may accomplish the bulk of the work as a configuration property in the .xaml file and hence only the .xaml file will be shown in detail below. In other code examples, the .xaml is used to define the configuration of graphical elements for the application but the application logic is performed in the code behind, hence you may see both the .xaml and .cs/.vb files shown in detail below.

XAML
<Window x:Class="AllLayersServiceInfo_FeatureServiceLayerInfo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:esri="http://schemas.esri.com/arcgis/runtime/2013"
    Title="MainWindow" Height="600" Width="800">
    <Grid x:Name="LayoutRoot">
        <StackPanel Orientation="Vertical">
            <StackPanel Orientation="Horizontal">
                <Button x:Name="Button1" Content="Get the AllLayersServiceInfo and FeatureServiceLayerInfo metadata for the ArcGIS Server service." Click="Button1_Click" Width="782"/>
            </StackPanel>
            <StackPanel Orientation="Horizontal">
                <esri:MapView x:Name="MapView1" Height="534" Width="354" >
                    <esri:Map x:Name="Map">

                        <!--
                        INSTRUCTIONS: 
                        Uncomment/comment out the various ArcGISDynamicMapServiceLayer's and ArcGISTiledMapServiceLayer's you want to interrogate the
                        metadata information for via the AllLayerServiceInfo and FeatureServiceLayerInfo objects.
                        -->

                        <!--<esri:ArcGISTiledMapServiceLayer ID="ESRI_StreetMap_World_2D" ServiceUri="http://server.arcgisonline.com/arcgis/rest/services/ESRI_StreetMap_World_2D/MapServer"/>-->
                        <!--<esri:ArcGISTiledMapServiceLayer ID="World_Topo_Map" ServiceUri="http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer" />-->
                        <!--<esri:ArcGISTiledMapServiceLayer ID="World_Light_Gray_Base" ServiceUri="http://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer" />-->
                        <!--<esri:ArcGISTiledMapServiceLayer ID="NatGeo_World_Map" ServiceUri="http://services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer" />-->
                        <esri:ArcGISTiledMapServiceLayer ID="Ocean_Basemap" ServiceUri="http://services.arcgisonline.com/ArcGIS/rest/services/Ocean_Basemap/MapServer" />
                        <!--<esri:ArcGISTiledMapServiceLayer ID="World_Terrain_Base" ServiceUri="http://services.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer" />-->
                        <!--<esri:ArcGISTiledMapServiceLayer ID="World_Street_Map" ServiceUri="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" />-->

                        <!--<esri:ArcGISDynamicMapServiceLayer ID="World_Light_Gray_Base" ImageFormat="PNG24" ServiceUri="http://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer"/>-->
                        <!--<esri:ArcGISDynamicMapServiceLayer ID="World Time Zones" ServiceUri="http://sampleserver6.arcgisonline.com/arcgis/rest/services/WorldTimeZones/MapServer"/>-->
                        <esri:ArcGISDynamicMapServiceLayer ID="BloomfieldHillsMichigan" ServiceUri="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/BloomfieldHillsMichigan/Parcels/MapServer"/>
                        <!--<esri:ArcGISDynamicMapServiceLayer ID="ESRI_StateCityHighway_USA" ServiceUri="http://sampleserver1.arcgisonline.com/arcgis/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer"/>-->
                        <!--<esri:ArcGISDynamicMapServiceLayer ID="USA_Unemployment_Rate" ServiceUri="http://services.arcgisonline.com/ArcGIS/rest/services/Demographics/USA_Unemployment_Rate/MapServer"/>-->
                        <!--<esri:ArcGISDynamicMapServiceLayer ID="USA" ServiceUri="http://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer" />-->
                        <!--<esri:ArcGISDynamicMapServiceLayer ID="KSPetro" ServiceUri="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Petroleum/KSPetro/MapServer"/>-->

                    </esri:Map>
                </esri:MapView>
                <TextBox x:Name="TextBlock1" TextWrapping="Wrap" Width="434" Height="534" />
            </StackPanel>
        </StackPanel>
    </Grid>
</Window>

SPECIAL NOTE: The XAML displayed above comes from a C# project. If you are a VB.NET developer, you will need to modify the text for the x:Class namespace from "AllLayersServiceInfo_FeatureServiceLayerInfo.MainWindow" to be just "MainWindow".

namespace AllLayersServiceInfo_FeatureServiceLayerInfo
{
    public partial class MainWindow : System.Windows.Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button1_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            // Get the collection of layers in the MapView.
            Esri.ArcGISRuntime.Layers.LayerCollection myLayers = MapView1.Map.Layers;

            // Create a StringBuilder to hold information to display back to the user.
            System.Text.StringBuilder myStringBuilder_FeatureServiceLayerInfo = new System.Text.StringBuilder();

            // Loop through each layer.
            foreach (Esri.ArcGISRuntime.Layers.Layer onelayer in myLayers)
            {
                // Create an AllLayersServiceInfo object to get metadata about the MapServer.
                Esri.ArcGISRuntime.ArcGISServices.AllLayersServiceInfo myAllLayersServiceInfo = null;

                // Create a list of FeatureServiceLayerInfo objects for the layers in the MapServer.
                System.Collections.Generic.IReadOnlyList<Esri.ArcGISRuntime.ArcGISServices.FeatureServiceLayerInfo> myIReadOnlyList_Layers = null;

                // Create a list of FeatureServiceLayerInfo objects for the tables in the MapServer.
                System.Collections.Generic.IReadOnlyList<Esri.ArcGISRuntime.ArcGISServices.FeatureServiceLayerInfo> myIReadOnlyList_Tables = null;

                // Test if the MapServer is an ArcGISDynamicMapServiceLayer.
                if (onelayer is Esri.ArcGISRuntime.Layers.ArcGISDynamicMapServiceLayer)
                {
                    // Get the ArcGISDynamicMapServiceLayer from the Map.
                    Esri.ArcGISRuntime.Layers.ArcGISDynamicMapServiceLayer myArcGISDynamicMapServiceLayer = (Esri.ArcGISRuntime.Layers.ArcGISDynamicMapServiceLayer)onelayer;

                    // Get the AllLayersServiceInfo object.
                    myAllLayersServiceInfo = await myArcGISDynamicMapServiceLayer.GetAllDetailsAsync();

                    // Get the collection of FeatureServiceLayerInfo objects for the layers in the AllLayersServiceInfo object.
                    myIReadOnlyList_Layers = myAllLayersServiceInfo.Layers;

                    // Get the collection of FeatureServiceLayerInfo objects for the tables in the AllLayersServiceInfo object.
                    myIReadOnlyList_Tables = myAllLayersServiceInfo.Tables;
                }

                // Test if the MapServer is an ArcGISTiledMapServiceLayer.
                if (onelayer is Esri.ArcGISRuntime.Layers.ArcGISTiledMapServiceLayer)
                {
                    Esri.ArcGISRuntime.Layers.ArcGISTiledMapServiceLayer myArcGISTiledMapServiceLayer = (Esri.ArcGISRuntime.Layers.ArcGISTiledMapServiceLayer)onelayer;

                    // Get the AllLayersServiceInfo object.
                    myAllLayersServiceInfo = await myArcGISTiledMapServiceLayer.GetAllDetailsAsync();

                    // Get the collection of FeatureServiceLayerInfo objects for the layers in the AllLayersServiceInfo object.
                    myIReadOnlyList_Layers = myAllLayersServiceInfo.Layers;

                    // Get the collection of FeatureServiceLayerInfo objects for the tables in the AllLayersServiceInfo object.
                    myIReadOnlyList_Tables = myAllLayersServiceInfo.Tables;
                }


                // Loop through each layer in the collection of FeatureServiceLayerInfo objects.
                for (var l = 0; l < myIReadOnlyList_Layers.Count; l++)
                {
                    // Get one FeatureServiceLayerInfo object. 
                    Esri.ArcGISRuntime.ArcGISServices.FeatureServiceLayerInfo myFeatureServiceLayerInfo_Layer = myIReadOnlyList_Layers[l];

                    // Display the detailed metadata about the layer via the FeatureServiceLayerInfo object.
                    GetMetadata(myFeatureServiceLayerInfo_Layer, myStringBuilder_FeatureServiceLayerInfo);
                }

                // Loop through each table in the collection of FeatureServiceLayerInfo objects.
                for (var t = 0; t < myIReadOnlyList_Tables.Count; t++)
                {
                    // Get one FeatureServiceLayerInfo object. 
                    Esri.ArcGISRuntime.ArcGISServices.FeatureServiceLayerInfo myFeatureServiceLayerInfo_Table = myIReadOnlyList_Tables[t];

                    // Display the detailed metadata about the table via the FeatureServiceLayerInfo object.
                    GetMetadata(myFeatureServiceLayerInfo_Table, myStringBuilder_FeatureServiceLayerInfo);
                }
            }

            // Display all of the metadata information back to the user.
            TextBlock1.Text = myStringBuilder_FeatureServiceLayerInfo.ToString();
        }

        public System.Text.StringBuilder GetMetadata(Esri.ArcGISRuntime.ArcGISServices.FeatureServiceLayerInfo myFeatureServiceLayerInfo, System.Text.StringBuilder myStringBuilder_FeatureServiceLayerInfo)
        {
            // FeatureServiceLayerInfo.Name
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("Name: " + myFeatureServiceLayerInfo.Name.ToString());

            // FeatureServiceLayerInfo.ID
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("ID: " + myFeatureServiceLayerInfo.ID.ToString());

            // FeatureServiceLayerInfo.AllowGeometryUpdates
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("AllowGeometryUpdates: " + myFeatureServiceLayerInfo.AllowGeometryUpdates.ToString());

            // FeatureServiceLayerInfo.CanModifyLayer
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("CanModifyLayer: " + myFeatureServiceLayerInfo.CanModifyLayer.ToString());

            // FeatureServiceLayerInfo.CanScaleSymbols
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("CanScaleSymbols: " + myFeatureServiceLayerInfo.CanScaleSymbols.ToString());

            // FeatureServiceLayerInfo.Capabilities
            if (myFeatureServiceLayerInfo.Capabilities != null)
            {
                System.Collections.Generic.IReadOnlyList<string> myCapabilities_IReadOnlyList = myFeatureServiceLayerInfo.Capabilities;
                string myCapabilities_String = "";
                foreach (string oneCapability in myCapabilities_IReadOnlyList)
                {
                    myCapabilities_String = myCapabilities_String + oneCapability + " ";
                }
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("Capabilities: " + myCapabilities_IReadOnlyList.Count.ToString() + " " + myCapabilities_String);
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("Capabilities: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.CopyrightText
            if (myFeatureServiceLayerInfo.CopyrightText != null)
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("CopyrightText: " + myFeatureServiceLayerInfo.CopyrightText.ToString());
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("CopyrightText: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.CurrentVersion
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("CurrentVersion: " + myFeatureServiceLayerInfo.CurrentVersion.ToString());

            //FeatureServiceLayerInfo.DefaultVisibility
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("DefaultVisibility: " + myFeatureServiceLayerInfo.DefaultVisibility.ToString());

            // FeatureServiceLayerInfo.DefinitionExpression
            if (myFeatureServiceLayerInfo.DefinitionExpression != null)
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("DefinitionExpression: " + myFeatureServiceLayerInfo.DefinitionExpression.ToString());
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("DefinitionExpression: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.Description
            if (myFeatureServiceLayerInfo.Description != null)
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("Description: " + myFeatureServiceLayerInfo.Description.ToString());
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("Description: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.DisplayField
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("DisplayField: " + myFeatureServiceLayerInfo.DisplayField.ToString());

            // FeatureServiceLayerInfo.DrawingInfo
            if (myFeatureServiceLayerInfo.DrawingInfo != null)
            {
                // TODO: The DrawingInfo object has many Properties. Add you own code to interrogate further.
                Esri.ArcGISRuntime.ArcGISServices.DrawingInfo myDrawingInfo = myFeatureServiceLayerInfo.DrawingInfo;
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("DrawingInfo: " + myDrawingInfo.ToString());
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("DrawingInfo: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.EditFieldsInfo
            if (myFeatureServiceLayerInfo.EditFieldsInfo != null)
            {
                // TODO: The EditFieldsInfo object has many Properties. Add you own code to interrogate further.
                Esri.ArcGISRuntime.ArcGISServices.EditFieldsInfo myEditFieldsInfo = myFeatureServiceLayerInfo.EditFieldsInfo;
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("EditFieldsInfo: " + myEditFieldsInfo.ToString());
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("EditFieldsInfo: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.EffectiveMaxScale
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("EffectiveMaxScale: " + myFeatureServiceLayerInfo.EffectiveMaxScale.ToString());

            // FeatureServiceLayerInfo.EffectiveMinScale
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("EffectiveMinScale: " + myFeatureServiceLayerInfo.EffectiveMinScale.ToString());

            // FeatureServiceLayerInfo.EnableZDefaults
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("EnableZDefaults: " + myFeatureServiceLayerInfo.EnableZDefaults.ToString());

            // FeatureServiceLayerInfo.Extent
            if (myFeatureServiceLayerInfo.Extent != null)
            {
                // TODO: The Envelope object has many Properties. Add you own code to interrogate further.
                Esri.ArcGISRuntime.Geometry.Envelope myExtent = myFeatureServiceLayerInfo.Extent;
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("Extent: " + myExtent.ToString());
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("Extent: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.Fields
            if (myFeatureServiceLayerInfo.Fields != null)
            {
                System.Collections.Generic.IReadOnlyList<Esri.ArcGISRuntime.Data.FieldInfo> myFields_IReadOnlyList = myFeatureServiceLayerInfo.Fields;
                string myFields_String = "";
                foreach (Esri.ArcGISRuntime.Data.FieldInfo oneField in myFields_IReadOnlyList)
                {
                    // TODO: The FieldInfo object has many Properties. Add you own code to interrogate further.
                    myFields_String = myFields_String + oneField.Name + " ";
                }
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("Fields: " + myFields_IReadOnlyList.Count.ToString() + " " + myFields_String);
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("Fields: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.GeometryType
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("GeometryType: " + myFeatureServiceLayerInfo.GeometryType.ToString());

            // FeatureServiceLayerInfo.GlobalIdField
            if (myFeatureServiceLayerInfo.GlobalIdField != null)
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("GlobalIdField: " + myFeatureServiceLayerInfo.GlobalIdField.ToString());
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("GlobalIdField: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.HasAttachments
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("HasAttachments: " + myFeatureServiceLayerInfo.HasAttachments.ToString());

            // FeatureServiceLayerInfo.HasLabels
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("HasLabels: " + myFeatureServiceLayerInfo.HasLabels.ToString());

            // FeatureServiceLayerInfo.HasM
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("HasM: " + myFeatureServiceLayerInfo.HasM.ToString());

            // FeatureServiceLayerInfo.HasZ
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("HasZ: " + myFeatureServiceLayerInfo.HasZ.ToString());

            // FeatureServiceLayerInfo.HtmlPopupType
            if (myFeatureServiceLayerInfo.HtmlPopupType != null)
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("HtmlPopupType: [Nothing/null]");
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("HtmlPopupType: " + myFeatureServiceLayerInfo.HtmlPopupType.ToString());
            }

            // FeatureServiceLayerInfo.IsDataVersioned
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("IsDataVersioned: " + myFeatureServiceLayerInfo.IsDataVersioned.ToString());

            // FeatureServiceLayerInfo.MaxRecordCount
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("MaxRecordCount: " + myFeatureServiceLayerInfo.MaxRecordCount.ToString());

            // FeatureServiceLayerInfo.MaxScale
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("MaxScale: " + myFeatureServiceLayerInfo.MaxScale.ToString());

            // FeatureServiceLayerInfo.MinScale
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("MinScale: " + myFeatureServiceLayerInfo.MinScale.ToString());

            // FeatureServiceLayerInfo.ObjectIdField
            if (myFeatureServiceLayerInfo.ObjectIdField != null)
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("ObjectIdField: " + myFeatureServiceLayerInfo.ObjectIdField.ToString());
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("ObjectIdField: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.OwnershipBasedAccessControl
            if (myFeatureServiceLayerInfo.OwnershipBasedAccessControl != null)
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("OwnershipBasedAccessControl: " + myFeatureServiceLayerInfo.OwnershipBasedAccessControl.ToString());
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("OwnershipBasedAccessControl: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.ParentLayer
            if (myFeatureServiceLayerInfo.ParentLayer != null)
            {
                // TODO: The LayerServiceInfo object has many Properties. Add you own code to interrogate further.
                Esri.ArcGISRuntime.ArcGISServices.LayerServiceInfo myLayerServiceInfo = myFeatureServiceLayerInfo.ParentLayer;
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("ParentLayer: " + myLayerServiceInfo.Name.ToString());
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("ParentLayer: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.Relationships
            if (myFeatureServiceLayerInfo.Relationships != null)
            {
                System.Collections.Generic.IReadOnlyList<Esri.ArcGISRuntime.ArcGISServices.Relationship> myRelationship_IReadOnlyList = myFeatureServiceLayerInfo.Relationships;
                string myRelationship_String = "";
                foreach (Esri.ArcGISRuntime.ArcGISServices.Relationship oneRelationship in myRelationship_IReadOnlyList)
                {
                    // TODO: The Relationship object has many Properties. Add you own code to interrogate further.
                    myRelationship_String = myRelationship_String + oneRelationship.Name + " ";
                }
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("Relationships: " + myRelationship_IReadOnlyList.Count.ToString() + " " + myRelationship_String);
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("Relationships: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.SubLayers
            if (myFeatureServiceLayerInfo.SubLayers != null)
            {
                System.Collections.Generic.IReadOnlyList<Esri.ArcGISRuntime.ArcGISServices.LayerServiceInfo> myLayerServiceInfo_IReadOnlyList = myFeatureServiceLayerInfo.SubLayers;
                string myLayerServiceInfo_String = "";
                foreach (Esri.ArcGISRuntime.ArcGISServices.LayerServiceInfo oneLayerServiceInfo in myLayerServiceInfo_IReadOnlyList)
                {
                    // TODO: The LayerServiceInfo object has many Properties. Add you own code to interrogate further.
                    myLayerServiceInfo_String = myLayerServiceInfo_String + oneLayerServiceInfo.Name + " ";
                }
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("SubLayers: " + myLayerServiceInfo_IReadOnlyList.Count.ToString() + " " + myLayerServiceInfo_String);
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("SubLayers: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.SupportsAdvancedQueries
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("SupportsAdvancedQueries: " + myFeatureServiceLayerInfo.SupportsAdvancedQueries.ToString());

            // FeatureServiceLayerInfo.SupportsDisconnectedEditing
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("SupportsDisconnectedEditing: " + myFeatureServiceLayerInfo.SupportsDisconnectedEditing.ToString());

            // FeatureServiceLayerInfo.SupportsRollbackOnFailureParameter
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("SupportsRollbackOnFailureParameter: " + myFeatureServiceLayerInfo.SupportsRollbackOnFailureParameter.ToString());

            // FeatureServiceLayerInfo.SupportsStatistics
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("SupportsStatistics: " + myFeatureServiceLayerInfo.SupportsStatistics.ToString());

            // FeatureServiceLayerInfo.SyncCanReturnChanges
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("SyncCanReturnChanges: " + myFeatureServiceLayerInfo.SyncCanReturnChanges.ToString());

            // FeatureServiceLayerInfo.Templates
            if (myFeatureServiceLayerInfo.Templates != null)
            {
                System.Collections.Generic.IReadOnlyList<Esri.ArcGISRuntime.ArcGISServices.FeatureTemplate> myFeatureTemplate_IReadOnlyList = myFeatureServiceLayerInfo.Templates;
                string myFeatureTemplate_String = "";
                foreach (Esri.ArcGISRuntime.ArcGISServices.FeatureTemplate oneFeatureTemplate in myFeatureTemplate_IReadOnlyList)
                {
                    // TODO: The FeatureTemplate object has many Properties. Add you own code to interrogate further.
                    myFeatureTemplate_String = myFeatureTemplate_String + oneFeatureTemplate.Name + " ";
                }
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("Templates: " + myFeatureTemplate_IReadOnlyList.Count + " " + myFeatureTemplate_String);
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("Templates: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.TimeInfo
            if (myFeatureServiceLayerInfo.TimeInfo != null)
            {
                // TODO: The TimeInfo object has many Properties. Add you own code to interrogate further.
                Esri.ArcGISRuntime.ArcGISServices.TimeInfo myTimeInfo = myFeatureServiceLayerInfo.TimeInfo;
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("TimeInfo: " + myTimeInfo.TimeExtent.ToString());
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("TimeInfo: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.Type
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("Type: " + myFeatureServiceLayerInfo.Type.ToString());

            // FeatureServiceLayerInfo.TypeIdField
            if (myFeatureServiceLayerInfo.TypeIdField != null)
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("TypeIdField: " + myFeatureServiceLayerInfo.TypeIdField.ToString());
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("TypeIdField: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.Types
            if (myFeatureServiceLayerInfo.Types != null)
            {
                System.Collections.Generic.IReadOnlyList<Esri.ArcGISRuntime.ArcGISServices.FeatureType> myFeatureType_IReadOnlyList = myFeatureServiceLayerInfo.Types;
                string myFeatureType_String = "";
                foreach (Esri.ArcGISRuntime.ArcGISServices.FeatureType oneFeatureType in myFeatureType_IReadOnlyList)
                {
                    // TODO: The FeatureType object has many Properties. Add you own code to interrogate further.
                    myFeatureType_String = myFeatureType_String + oneFeatureType.Name + " ";
                }
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("Types: " + myFeatureType_IReadOnlyList.Count + " " + myFeatureType_String);
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("Types: [Nothing/null]");
            }

            // FeatureServiceLayerInfo.ZDefault
            if (myFeatureServiceLayerInfo.ZDefault != null)
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("ZDefault: " + myFeatureServiceLayerInfo.ZDefault.ToString());
            }
            else
            {
                myStringBuilder_FeatureServiceLayerInfo.AppendLine("ZDefault: [Nothing/null]");
            }

            // Add some formatting if there are multiple layers/tables in the FeatureServiceLayerInfo object.
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("");
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("****************************************************************");
            myStringBuilder_FeatureServiceLayerInfo.AppendLine("");

            // Return the StringBuilder. 
            return myStringBuilder_FeatureServiceLayerInfo;
        }
    }
}