[mapguide-commits] r8736 - in trunk/Tools/Maestro: Maestro.Base Maestro.Base/Commands/Conditions Maestro.Base/Commands/SiteExplorer Maestro.Base/Editor Maestro.Base/Events Maestro.Base/Services Maestro.Base/Services/DragDropHandlers Maestro.Base/Templates Maestro.Base/UI Maestro.Base/UI/Preferences Maestro.Editors/Common Maestro.Editors/Common/Expression Maestro.Editors/Diagnostics Maestro.Editors/DrawingSource Maestro.Editors/FeatureSource Maestro.Editors/FeatureSource/Extensions Maestro.Editors/FeatureSource/Preview Maestro.Editors/FeatureSource/Providers Maestro.Editors/FeatureSource/Providers/Gdal Maestro.Editors/Fusion Maestro.Editors/Fusion/WidgetEditors Maestro.Editors/Generic/XmlEditor Maestro.Editors/LayerDefinition Maestro.Editors/LayerDefinition/Drawing Maestro.Shared.UI MgCooker OSGeo.MapGuide.MaestroAPI OSGeo.MapGuide.MaestroAPI/Commands OSGeo.MapGuide.MaestroAPI/CoordinateSystem OSGeo.MapGuide.MaestroAPI/CrossConnection OSGeo.MapGuide.MaestroAPI/Exceptions OSGeo.MapGuide.MaestroA PI/Feature OSGeo.MapGuide.MaestroAPI/Internal OSGeo.MapGuide.MaestroAPI/Mapping OSGeo.MapGuide.MaestroAPI/Resource OSGeo.MapGuide.MaestroAPI/Resource/Comparison OSGeo.MapGuide.MaestroAPI/Resource/Validation OSGeo.MapGuide.MaestroAPI/Schema OSGeo.MapGuide.MaestroAPI/SchemaOverrides OSGeo.MapGuide.MaestroAPI/Serialization OSGeo.MapGuide.MaestroAPI/Tile

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Aug 10 07:57:50 PDT 2015


Author: jng
Date: 2015-08-10 07:57:50 -0700 (Mon, 10 Aug 2015)
New Revision: 8736

Removed:
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Comparison/BinaryData.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Comparison/CharData.cs
Modified:
   trunk/Tools/Maestro/Maestro.Base/Commands/Conditions/ActiveEditorConditionEvaluator.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/CompileFullDependencyListCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/DuplicateResourceCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/NewFolderCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/RenameCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/SetupFolderStructureCommand.cs
   trunk/Tools/Maestro/Maestro.Base/Editor/IEditorFactory.cs
   trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditor.cs
   trunk/Tools/Maestro/Maestro.Base/Events/EventWatcher.cs
   trunk/Tools/Maestro/Maestro.Base/MaestroPaths.cs
   trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/DwfFileHandler.cs
   trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/PackageFileHandler.cs
   trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/SdfFileHandler.cs
   trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/ShpFileHandler.cs
   trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/SltFileHandler.cs
   trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/XmlResFileHandler.cs
   trunk/Tools/Maestro/Maestro.Base/Services/NewItemTemplateService.cs
   trunk/Tools/Maestro/Maestro.Base/Services/OpenResourceManager.cs
   trunk/Tools/Maestro/Maestro.Base/Services/ServerConnectionManager.cs
   trunk/Tools/Maestro/Maestro.Base/Templates/UserItemTemplate.cs
   trunk/Tools/Maestro/Maestro.Base/UI/BoundsPicker.cs
   trunk/Tools/Maestro/Maestro.Base/UI/ConfirmDeleteResourcesDialog.cs
   trunk/Tools/Maestro/Maestro.Base/UI/ISiteExplorer.cs
   trunk/Tools/Maestro/Maestro.Base/UI/LabelLocalizationDialog.cs
   trunk/Tools/Maestro/Maestro.Base/UI/MessageViewer.cs
   trunk/Tools/Maestro/Maestro.Base/UI/NewFolderDialog.cs
   trunk/Tools/Maestro/Maestro.Base/UI/OutboundRequestViewer.cs
   trunk/Tools/Maestro/Maestro.Base/UI/Preferences/ConfigProperties.cs
   trunk/Tools/Maestro/Maestro.Base/UI/RepositoryTreeModel.cs
   trunk/Tools/Maestro/Maestro.Base/UI/ResourceDependencyListDialog.cs
   trunk/Tools/Maestro/Maestro.Base/UI/ResourceIconCache.cs
   trunk/Tools/Maestro/Maestro.Base/UI/ResourceIdNavigator.cs
   trunk/Tools/Maestro/Maestro.Base/UI/ResourcePropertiesDialog.cs
   trunk/Tools/Maestro/Maestro.Base/UI/SiteExplorer.cs
   trunk/Tools/Maestro/Maestro.Base/UI/TipOfTheDayDialog.cs
   trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.cs
   trunk/Tools/Maestro/Maestro.Base/WorkbenchInitializer.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/CoordinateSystemPicker.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/EditorBindableCollapsiblePanel.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/Expression/FdoExpressionCompletionDataProvider.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/Expression/FdoExpressionValidator.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/UnmanagedFileBrowser.cs
   trunk/Tools/Maestro/Maestro.Editors/Diagnostics/ServerStatusMonitor.cs
   trunk/Tools/Maestro/Maestro.Editors/DrawingSource/SourceSectionCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/CalculationSettings.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/ExtendedClassSettings.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/JoinSettings.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/ExtensionsCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/FsEditorMap.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/LocalFeatureSourcePreviewCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/StandardQueryCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/FileBasedCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/CompositeFileCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/GenericCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/Fusion/FlexLayoutSettingsCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetEditors/WidgetEditorBase.cs
   trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetEditors/WidgetInfoDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetManagementDialog.cs
   trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetSettingsCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditor/FindAndReplaceForm.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Drawing/DrawingLayerSettingsCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/LayerPropertiesSectionCtrl.cs
   trunk/Tools/Maestro/Maestro.Shared.UI/WaitCursor.cs
   trunk/Tools/Maestro/MgCooker/SetupRun.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ArgumentParser.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/ExecuteLoadProcedure.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/FeatureManipulationCommandImpl.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ConnectionProviderRegistry.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/ActualCoordinateSystem.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystem.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystemBase.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystemCategory.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CrossConnection/ResourceMigrator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CrossConnection/ResourceRebaser.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Enums.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Exceptions/UnsupportedResourceTypeException.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Exceptions/UnsupportedServiceTypeException.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Feature/FeatureBase.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/IServerConnection.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Internal/FixedWKTReader.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/LengthyOperationCallbackArgs.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/MapSelection.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMap.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMapLayer.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Platform.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/PlatformConnectionBase.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Comparison/DiffEngine.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Comparison/TextFile.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/IResourceValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseWebLayoutValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/DrawingSourceValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/FeatureSourceValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/LayerDefinitionValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/LoadProcedureValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/MapDefinitionValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidationContext.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidatorSet.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/SymbolDefinitionValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/WebLayoutValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/FeatureSourceDescription.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/GdalRasterItem.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/OdbcConfigurationDocument.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/RasterWmsItem.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Serialization/Enums.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Serialization/MgBinaryDeserializer.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Serialization/MgBinarySerializer.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Tile/BatchSettings.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Tile/RenderThread.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Utility.cs
Log:
#2565: More RES code styling fixes and string interpolation replacements

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/Conditions/ActiveEditorConditionEvaluator.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/Conditions/ActiveEditorConditionEvaluator.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/Conditions/ActiveEditorConditionEvaluator.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -27,6 +27,15 @@
 {
     internal class ActiveEditorConditionEvaluator : IConditionEvaluator
     {
+        static class ConditionProperties
+        {
+            public const string CANPREVIEW = nameof(CANPREVIEW);
+            public const string CANVALIDATE = nameof(CANVALIDATE);
+            public const string CANSAVE = nameof(CANSAVE);
+            public const string CANPROFILE = nameof(CANPROFILE);
+            public const string CANEDITASXML = nameof(CANEDITASXML);
+        }
+
         public bool IsValid(object caller, Condition condition)
         {
             var wb = Workbench.Instance;
@@ -40,19 +49,19 @@
                     prop = prop.ToUpper();
                     switch (prop)
                     {
-                        case "CANPREVIEW": //NOXLATE
+                        case ConditionProperties.CANPREVIEW:
                             return ed != null && ed.CanBePreviewed;
 
-                        case "CANVALIDATE": //NOXLATE
+                        case ConditionProperties.CANVALIDATE:
                             return ed != null && ed.CanBeValidated;
 
-                        case "CANSAVE": //NOXLATE
+                        case ConditionProperties.CANSAVE:
                             return ed != null && !ed.IsNew && ed.IsDirty;
 
-                        case "CANPROFILE": //NOXLATE
+                        case ConditionProperties.CANPROFILE:
                             return ed != null && ed.CanProfile;
 
-                        case "CANEDITASXML": //NOXLATE
+                        case ConditionProperties.CANEDITASXML:
                             return ed != null && ed.CanEditAsXml;
 
                         default:

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/CompileFullDependencyListCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/CompileFullDependencyListCommand.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/CompileFullDependencyListCommand.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -95,11 +95,11 @@
                 this.UpstreamDependencies = upRefs;
             }
 
-            public ICollection<string> SelectedResources { get; private set; }
+            public ICollection<string> SelectedResources { get; }
 
-            public ICollection<string> DownstreamDependencies { get; private set; }
+            public ICollection<string> DownstreamDependencies { get; }
 
-            public ICollection<string> UpstreamDependencies { get; private set; }
+            public ICollection<string> UpstreamDependencies { get; }
         }
 
         private static object DoBackgroundWorker(BackgroundWorker wrk, DoWorkEventArgs e, params object[] args)

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/DuplicateResourceCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/DuplicateResourceCommand.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/DuplicateResourceCommand.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -56,7 +56,7 @@
                     //doesn't already exists. Note this would automatically guard against any resources in this folder
                     //that may already be open in an editor
                     var rid = new ResourceIdentifier(item.ResourceId);
-                    var name = rid.IsFolder ? (rid.Name + "/") : (rid.Name + "." + rid.ResourceType.ToString()); //NOXLATE
+                    var name = rid.IsFolder ? $"{rid.Name}/" : $"{rid.Name}.{rid.ResourceType.ToString()}"; //NOXLATE
                     var resId = folder.ResourceId + name;
                     int counter = 0;
                     while (conn.ResourceService.ResourceExists(resId))
@@ -65,13 +65,13 @@
 
                         if (rid.IsFolder)
                         {
-                            resId = folder.ResourceId + rid.Name + " (" + counter + ")/"; //NOXLATE
+                            resId = $"{folder.ResourceId + rid.Name} ({counter})/"; //NOXLATE
                         }
                         else
                         {
                             var rname = name.Substring(0, name.IndexOf(".")); //NOXLATE
                             var type = name.Substring(name.IndexOf(".")); //NOXLATE
-                            rname += " (" + counter + ")"; //NOXLATE
+                            rname += $" ({counter})"; //NOXLATE
                             resId = folder.ResourceId + rname + type;
                         }
                     }

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/NewFolderCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/NewFolderCommand.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/NewFolderCommand.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -61,13 +61,13 @@
                     {
                         name = diag.FolderName;
                         //conn.ResourceService.CreateFolder(item.ResourceId + name);
-                        conn.ResourceService.SetResourceXmlData(item.ResourceId + name + "/", null); //NOXLATE
+                        conn.ResourceService.SetResourceXmlData($"{item.ResourceId + name}/", null); //NOXLATE
                         var path = item.Model.GetPath(item);
                         item.Model.RaiseStructureChanged(new Aga.Controls.Tree.TreeModelEventArgs(path, new object[0]));
 
                         //Expand so user can see this new folder
                         exp.ExpandNode(conn.DisplayName, item.ResourceId);
-                        exp.SelectNode(conn.DisplayName, item.ResourceId + name + "/"); //NOXLATE
+                        exp.SelectNode(conn.DisplayName, $"{item.ResourceId + name}/"); //NOXLATE
                     }
                 }
             }

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/RenameCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/RenameCommand.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/RenameCommand.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -66,13 +66,13 @@
                     string newid = string.Empty;
                     if (current.IsFolder)
                     {
-                        oldid = parent.ResourceId + current.Name + "/"; //NOXLATE
-                        newid = parent.ResourceId + dlg.NewName + "/"; //NOXLATE
+                        oldid = $"{parent.ResourceId + current.Name}/"; //NOXLATE
+                        newid = $"{parent.ResourceId + dlg.NewName}/"; //NOXLATE
                     }
                     else
                     {
-                        oldid = parent.ResourceId + current.Name + "." + current.ResourceType; //NOXLATE
-                        newid = parent.ResourceId + dlg.NewName + "." + current.ResourceType; //NOXLATE
+                        oldid = $"{parent.ResourceId + current.Name}.{current.ResourceType}"; //NOXLATE
+                        newid = $"{parent.ResourceId + dlg.NewName}.{current.ResourceType}"; //NOXLATE
                     }
 
                     if (omgr.IsOpen(newid, conn))

Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/SetupFolderStructureCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/SetupFolderStructureCommand.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/SetupFolderStructureCommand.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -54,11 +54,11 @@
                 }
                 foreach (var n in names)
                 {
-                    string fid = current + n + "/"; //NOXLATE
+                    string fid = $"{current + n}/"; //NOXLATE
                     if (!conn.ResourceService.ResourceExists(fid))
                     {
                         conn.ResourceService.SetResourceXmlData(fid, null);
-                        LoggingService.Info("Created Folder: " + fid);
+                        LoggingService.Info($"Created Folder: {fid}");
                     }
                 }
                 exp.RefreshModel(conn.DisplayName, current);

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/IEditorFactory.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/IEditorFactory.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/IEditorFactory.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -49,7 +49,7 @@
 
     internal class FusionEditorFactory : IEditorFactory
     {
-        public ResourceTypeDescriptor ResourceTypeAndVersion { get; private set; }
+        public ResourceTypeDescriptor ResourceTypeAndVersion { get; }
 
         public FusionEditorFactory()
         {
@@ -64,7 +64,7 @@
 
     internal class DrawingSourceEditorFactory : IEditorFactory
     {
-        public ResourceTypeDescriptor ResourceTypeAndVersion { get; private set; }
+        public ResourceTypeDescriptor ResourceTypeAndVersion { get; }
 
         public DrawingSourceEditorFactory()
         {
@@ -79,7 +79,7 @@
 
     internal class FeatureSourceEditorFactory : IEditorFactory
     {
-        public ResourceTypeDescriptor ResourceTypeAndVersion { get; private set; }
+        public ResourceTypeDescriptor ResourceTypeAndVersion { get; }
 
         public FeatureSourceEditorFactory()
         {
@@ -94,7 +94,7 @@
 
     internal class LayerDefinitionEditorFactory : IEditorFactory
     {
-        public ResourceTypeDescriptor ResourceTypeAndVersion { get; private set; }
+        public ResourceTypeDescriptor ResourceTypeAndVersion { get; }
 
         public LayerDefinitionEditorFactory()
         {
@@ -109,7 +109,7 @@
 
     internal class LoadProcedureEditorFactory : IEditorFactory
     {
-        public ResourceTypeDescriptor ResourceTypeAndVersion { get; private set; }
+        public ResourceTypeDescriptor ResourceTypeAndVersion { get; }
 
         public LoadProcedureEditorFactory()
         {
@@ -124,7 +124,7 @@
 
     internal class MapDefinitionEditorFactory : IEditorFactory
     {
-        public ResourceTypeDescriptor ResourceTypeAndVersion { get; private set; }
+        public ResourceTypeDescriptor ResourceTypeAndVersion { get; }
 
         public MapDefinitionEditorFactory()
         {
@@ -139,7 +139,7 @@
 
     internal class PrintLayoutEditorFactory : IEditorFactory
     {
-        public ResourceTypeDescriptor ResourceTypeAndVersion { get; private set; }
+        public ResourceTypeDescriptor ResourceTypeAndVersion { get; }
 
         public PrintLayoutEditorFactory()
         {
@@ -154,7 +154,7 @@
 
     internal class SymbolDefinitionEditorFactory : IEditorFactory
     {
-        public ResourceTypeDescriptor ResourceTypeAndVersion { get; private set; }
+        public ResourceTypeDescriptor ResourceTypeAndVersion { get; }
 
         public SymbolDefinitionEditorFactory()
         {
@@ -169,7 +169,7 @@
 
     internal class WebLayoutEditorFactory : IEditorFactory
     {
-        public ResourceTypeDescriptor ResourceTypeAndVersion { get; private set; }
+        public ResourceTypeDescriptor ResourceTypeAndVersion { get; }
 
         public WebLayoutEditorFactory()
         {

Modified: trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditor.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/XmlEditor.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -79,7 +79,7 @@
             editor.LoadAutoCompletionData(path);
             editor.Bind(_edSvc);
             editor.ReadyForEditing(); //This turns on event broadcasting
-            this.Title = Strings.XmlEditor + " " + ResourceIdentifier.GetName(this.EditorService.ResourceID); //NOXLATE
+            this.Title = $"{Strings.XmlEditor} {ResourceIdentifier.GetName(this.EditorService.ResourceID)}"; //NOXLATE
         }
 
         protected override ICollection<ValidationIssue> ValidateEditedResource()
@@ -150,7 +150,7 @@
         public override void Preview()
         {
             //Save the current resource to another session copy
-            string resId = "Session:" + this.EditorService.SessionID + "//" + Guid.NewGuid() + "." + this.Resource.ResourceType.ToString(); //NOXLATE
+            string resId = $"Session:{this.EditorService.SessionID}//Preview{Guid.NewGuid()}.{this.Resource.ResourceType.ToString()}"; //NOXLATE
             string xml = this.XmlContent;
             var resSvc = this.EditorService.CurrentConnection.ResourceService;
             try

Modified: trunk/Tools/Maestro/Maestro.Base/Events/EventWatcher.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Events/EventWatcher.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Events/EventWatcher.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -67,27 +67,27 @@
             {
                 case ConfigProperties.UseLocalPreview:
                     PreviewSettings.UseLocalPreview = Convert.ToBoolean(e.NewValue);
-                    LoggingService.Info("Use Local Preview setting is now: " + PreviewSettings.UseLocalPreview); //NOXLATE
+                    LoggingService.Info($"Use Local Preview setting is now: {PreviewSettings.UseLocalPreview}"); //NOXLATE
                     break;
 
                 case ConfigProperties.AddDebugWatermark:
                     PreviewSettings.AddDebugWatermark = Convert.ToBoolean(e.NewValue);
-                    LoggingService.Info("Add Debug Watermark setting is now: " + PreviewSettings.AddDebugWatermark); //NOXLATE
+                    LoggingService.Info($"Add Debug Watermark setting is now: {PreviewSettings.AddDebugWatermark}"); //NOXLATE
                     break;
 
                 case ConfigProperties.PreviewViewerType:
                     PreviewSettings.UseAjaxViewer = (e.NewValue.ToString() == "AJAX"); //NOXLATE
-                    LoggingService.Info("Use AJAX Viewer setting is now: " + PreviewSettings.UseAjaxViewer);
+                    LoggingService.Info($"Use AJAX Viewer setting is now: {PreviewSettings.UseAjaxViewer}"); //NOXLATE
                     break;
 
                 case ConfigProperties.UseGridStyleEditor:
                     LayerEditorSettings.UseGridEditor = Convert.ToBoolean(e.NewValue);
-                    LoggingService.Info("Use Grid Style Editor is now: " + LayerEditorSettings.UseGridEditor);
+                    LoggingService.Info($"Use Grid Style Editor is now: {LayerEditorSettings.UseGridEditor}"); //NOXLATE
                     break;
 
                 case ConfigProperties.XsdSchemaPath:
                     XmlEditorSettings.XsdPath = e.NewValue.ToString();
-                    LoggingService.Info("XSD path is now: " + XmlEditorSettings.XsdPath);
+                    LoggingService.Info($"XSD path is now: {XmlEditorSettings.XsdPath}"); //NOXLAT
                     break;
             }
         }
@@ -109,7 +109,7 @@
                     try
                     {
                         conn.FeatureService.GetProviderCapabilities("OSGeo.SDF"); //NOXLATE
-                        LoggingService.Info("Session kept alive: " + sessionId); //NOXLATE
+                        LoggingService.Info($"Session kept alive: {sessionId}"); //NOXLATE
                     }
                     catch (Exception)
                     {
@@ -135,7 +135,7 @@
             Workbench wb = Workbench.Instance;
             Debug.Assert(wb.ActiveSiteExplorer != null);
             var svc = ServiceRegistry.GetService<ServerConnectionManager>();
-            LoggingService.Info("There are now " + svc.GetConnectionNames().Count + " active connections");  //NOXLATE
+            LoggingService.Info($"There are now {svc.GetConnectionNames().Count} active connections");  //NOXLATE
             //Debug.Assert(wb.ActiveSiteExplorer.ConnectionName == name);
         }
 
@@ -166,7 +166,7 @@
             var svc = ServiceRegistry.GetService<ServerConnectionManager>();
             var conn = svc.GetConnection(e.ConnectionName);
 
-            LoggingService.Info("There are now " + svc.GetConnectionNames().Count + " active connections"); //NOXLATE
+            LoggingService.Info($"There are now {svc.GetConnectionNames().Count} active connections"); //NOXLATE
         }
 
         private static void OnActiveConnectionChanged(object sender, EventArgs e)

Modified: trunk/Tools/Maestro/Maestro.Base/MaestroPaths.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/MaestroPaths.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/MaestroPaths.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -39,7 +39,7 @@
             get
             {
                 var asmVersion = Assembly.GetExecutingAssembly().GetName().Version;
-                return string.Format("Maestro-{0}.{1}", asmVersion.Major, asmVersion.Minor); //NOXLATE
+                return $"Maestro-{asmVersion.Major}.{asmVersion.Minor}"; //NOXLATE
             }
         }
 
@@ -64,7 +64,7 @@
             {
                 var asmVersion = Assembly.GetExecutingAssembly().GetName().Version;
                 return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
-                                    string.Format("Maestro-{0}.{1}", asmVersion.Major, asmVersion.Minor), //NOXLATE
+                                    $"Maestro-{asmVersion.Major}.{asmVersion.Minor}", //NOXLATE
                                     "AddIns"); //NOXLATE
             }
         }*/

Modified: trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/DwfFileHandler.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/DwfFileHandler.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/DwfFileHandler.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -37,7 +37,7 @@
             get { return Strings.DwfHandlerAction; }
         }
 
-        private string[] extensions = { ".dwf" }; //NOXLATE
+        private readonly string[] extensions = { ".dwf" }; //NOXLATE
 
         public bool HandleDrop(IServerConnection conn, string file, string folderId)
         {
@@ -50,11 +50,11 @@
                 string fileName = Path.GetFileName(file);
                 string resName = Path.GetFileNameWithoutExtension(file);
                 int counter = 0;
-                string resId = folderId + resName + ".DrawingSource"; //NOXLATE
+                string resId = $"{folderId + resName}.DrawingSource"; //NOXLATE
                 while (conn.ResourceService.ResourceExists(resId))
                 {
                     counter++;
-                    resId = folderId + resName + " (" + counter + ").DrawingSource"; //NOXLATE
+                    resId = $"{folderId + resName} ({counter}).DrawingSource"; //NOXLATE
                 }
                 ds.ResourceID = resId;
                 //fs.SetConnectionProperty("File", StringConstants.MgDataFilePath + fileName); //NOXLATE

Modified: trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/PackageFileHandler.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/PackageFileHandler.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/PackageFileHandler.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -36,7 +36,7 @@
             get { return Strings.MgpHandlerAction; }
         }
 
-        private string[] extensions = { ".mgp" }; //NOXLATE
+        private readonly string[] extensions = { ".mgp" }; //NOXLATE
 
         public bool HandleDrop(IServerConnection conn, string file, string folderId)
         {

Modified: trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/SdfFileHandler.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/SdfFileHandler.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/SdfFileHandler.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -36,7 +36,7 @@
             get { return Strings.SdfHandlerAction; }
         }
 
-        private string[] extensions = { ".sdf" }; //NOXLATE
+        private readonly string[] extensions = { ".sdf" }; //NOXLATE
 
         public bool HandleDrop(IServerConnection conn, string file, string folderId)
         {
@@ -49,11 +49,11 @@
                 string fileName = Path.GetFileName(file);
                 string resName = Path.GetFileNameWithoutExtension(file);
                 int counter = 0;
-                string resId = folderId + resName + ".FeatureSource"; //NOXLATE
+                string resId = $"{folderId + resName}.FeatureSource"; //NOXLATE
                 while (conn.ResourceService.ResourceExists(resId))
                 {
                     counter++;
-                    resId = folderId + resName + " (" + counter + ").FeatureSource"; //NOXLATE
+                    resId = $"{folderId + resName} ({counter}).FeatureSource"; //NOXLATE
                 }
                 fs.ResourceID = resId;
                 fs.SetConnectionProperty("File", StringConstants.MgDataFilePath + fileName); //NOXLATE

Modified: trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/ShpFileHandler.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/ShpFileHandler.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/ShpFileHandler.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -36,7 +36,7 @@
             get { return Strings.ShpHandlerAction; }
         }
 
-        private string[] extensions = { ".shp" }; //NOXLATE
+        private readonly string[] extensions = { ".shp" }; //NOXLATE
 
         public bool HandleDrop(IServerConnection conn, string file, string folderId)
         {
@@ -49,11 +49,11 @@
                 string fileName = Path.GetFileName(file);
                 string resName = Path.GetFileNameWithoutExtension(file);
                 int counter = 0;
-                string resId = folderId + resName + ".FeatureSource"; //NOXLATE
+                string resId = $"{folderId + resName}.FeatureSource"; //NOXLATE
                 while (conn.ResourceService.ResourceExists(resId))
                 {
                     counter++;
-                    resId = folderId + resName + " (" + counter + ").FeatureSource"; //NOXLATE
+                    resId = $"{folderId + resName} ({counter}).FeatureSource"; //NOXLATE
                 }
                 fs.ResourceID = resId;
                 fs.SetConnectionProperty("DefaultFileLocation", StringConstants.MgDataFilePath + fileName); //NOXLATE
@@ -62,11 +62,11 @@
                 //As we all know, the term shape file is deceptive...
                 string[] files = {
                     file,
-                    file.Substring(0, file.LastIndexOf(".")) + ".shx", //NOXLATE
-                    file.Substring(0, file.LastIndexOf(".")) + ".dbf", //NOXLATE
-                    file.Substring(0, file.LastIndexOf(".")) + ".idx", //NOXLATE
-                    file.Substring(0, file.LastIndexOf(".")) + ".prj", //NOXLATE
-                    file.Substring(0, file.LastIndexOf(".")) + ".cpg" //NOXLATE
+                    $"{file.Substring(0, file.LastIndexOf("."))}.shx", //NOXLATE
+                    $"{file.Substring(0, file.LastIndexOf("."))}.dbf", //NOXLATE
+                    $"{file.Substring(0, file.LastIndexOf("."))}.idx", //NOXLATE
+                    $"{file.Substring(0, file.LastIndexOf("."))}.prj", //NOXLATE
+                    $"{file.Substring(0, file.LastIndexOf("."))}.cpg" //NOXLATE
                 };
 
                 foreach (string fn in files)

Modified: trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/SltFileHandler.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/SltFileHandler.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/SltFileHandler.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -36,7 +36,7 @@
             get { return Strings.SdfHandlerAction; }
         }
 
-        private string[] extensions = { ".sqlite", ".db", ".slt" }; //NOXLATE
+        private readonly string[] extensions = { ".sqlite", ".db", ".slt" }; //NOXLATE
 
         public bool HandleDrop(IServerConnection conn, string file, string folderId)
         {
@@ -49,11 +49,11 @@
                 string fileName = Path.GetFileName(file);
                 string resName = Path.GetFileNameWithoutExtension(file);
                 int counter = 0;
-                string resId = folderId + resName + ".FeatureSource"; //NOXLATE
+                string resId = $"{folderId + resName}.FeatureSource"; //NOXLATE
                 while (conn.ResourceService.ResourceExists(resId))
                 {
                     counter++;
-                    resId = folderId + resName + " (" + counter + ").FeatureSource"; //NOXLATE
+                    resId = $"{folderId + resName} ({counter}).FeatureSource"; //NOXLATE
                 }
                 fs.ResourceID = resId;
                 fs.SetConnectionProperty("File", StringConstants.MgDataFilePath + fileName); //NOXLATE

Modified: trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/XmlResFileHandler.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/XmlResFileHandler.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/XmlResFileHandler.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -51,11 +51,11 @@
                 {
                     //The easiest way to tell if this XML file is legit
                     var res = ObjectFactory.DeserializeXml(xml);
-                    string resId = folderId + name + "." + res.ResourceType.ToString(); //NOXLATE
+                    string resId = $"{folderId + name}.{res.ResourceType.ToString()}"; //NOXLATE
                     while (conn.ResourceService.ResourceExists(resId))
                     {
                         counter++;
-                        resId = folderId + name + " (" + counter + ")." + res.ResourceType.ToString(); //NOXLATE
+                        resId = $"{folderId + name} ({counter}).{res.ResourceType.ToString()}"; //NOXLATE
                     }
                     res.ResourceID = resId;
                     conn.ResourceService.SaveResource(res);
@@ -63,11 +63,11 @@
                 catch //We may be working with an unknown resource type or schema version here so try blind before bailing
                 {
                     string resType = Path.GetExtension(file);
-                    string resId = folderId + name + "." + resType; //NOXLATE
+                    string resId = $"{folderId + name}.{resType}"; //NOXLATE
                     while (conn.ResourceService.ResourceExists(resId))
                     {
                         counter++;
-                        resId = folderId + name + " (" + counter + ")." + resType; //NOXLATE
+                        resId = $"{folderId + name} ({counter}).{resType}"; //NOXLATE
                     }
                     using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
                     {

Modified: trunk/Tools/Maestro/Maestro.Base/Services/NewItemTemplateService.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/NewItemTemplateService.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Services/NewItemTemplateService.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -49,7 +49,7 @@
                     _templates[tp.Category] = new List<ItemTemplate>();
 
                 _templates[tp.Category].Add(tp);
-                LoggingService.Info("Registered default template: " + tp.GetType()); //NOXLATE
+                LoggingService.Info($"Registered default template: {tp.GetType()}"); //NOXLATE
             }
 
             LoggingService.Info("Initialized: New Item Template Service"); //NOXLATE
@@ -85,7 +85,7 @@
                     }
                     catch (Exception)
                     {
-                        LoggingService.Info("Could not load user template: " + file); //NOXLATE
+                        LoggingService.Info($"Could not load user template: {file}"); //NOXLATE
                     }
                 }
             }
@@ -107,7 +107,7 @@
         /// </summary>
         public class TemplateSet
         {
-            private Dictionary<string, List<ItemTemplate>> _templates;
+            private readonly Dictionary<string, List<ItemTemplate>> _templates;
 
             internal TemplateSet(IEnumerable<ItemTemplate> templates)
             {

Modified: trunk/Tools/Maestro/Maestro.Base/Services/OpenResourceManager.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/OpenResourceManager.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Services/OpenResourceManager.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -155,15 +155,9 @@
             }
         }
 
-        internal static string ComputeResourceKey(string resId, IServerConnection conn)
-        {
-            return conn.DisplayName + "|" + resId; //NOXLATE
-        }
+        internal static string ComputeResourceKey(string resId, IServerConnection conn) => $"{conn.DisplayName}|{resId}"; //NOXLATE
 
-        internal static string ComputeResourceKey(IResource res, IServerConnection conn)
-        {
-            return conn.DisplayName + "|" + res.ResourceID; //NOXLATE
-        }
+        internal static string ComputeResourceKey(IResource res, IServerConnection conn) => $"{conn.DisplayName}|{res.ResourceID}"; //NOXLATE
 
         /// <summary>
         /// Opens the specified resource using its assigned editor. If the resource is already

Modified: trunk/Tools/Maestro/Maestro.Base/Services/ServerConnectionManager.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/ServerConnectionManager.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Services/ServerConnectionManager.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -104,7 +104,7 @@
         /// </summary>
         public event ServerConnectionEventHandler ConnectionRemoved;
 
-        private Dictionary<string, IServerConnection> _connections = new Dictionary<string, IServerConnection>();
+        private readonly Dictionary<string, IServerConnection> _connections = new Dictionary<string, IServerConnection>();
 
         /// <summary>
         /// Gets the names of all currently open connections

Modified: trunk/Tools/Maestro/Maestro.Base/Templates/UserItemTemplate.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Templates/UserItemTemplate.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/Templates/UserItemTemplate.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -30,7 +30,7 @@
 {
     internal class UserItemTemplate : ItemTemplate
     {
-        private IResource _res;
+        private readonly IResource _res;
 
         public UserItemTemplate(string templatePath)
             : this(Strings.TPL_USER_DEFINED, templatePath)
@@ -43,7 +43,7 @@
         public string TemplatePath
         {
             get;
-            private set;
+
         }
 
         public UserItemTemplate(string name, string description, string templatePath)

Modified: trunk/Tools/Maestro/Maestro.Base/UI/BoundsPicker.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/BoundsPicker.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/UI/BoundsPicker.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -57,7 +57,7 @@
                     System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
                     if (bounds.Trim().StartsWith("<")) //NOXLATE
                         bounds = System.Web.HttpUtility.HtmlDecode(bounds);
-                    bounds = "<root>" + bounds + "</root>"; //NOXLATE
+                    bounds = $"<root>{bounds}</root>"; //NOXLATE
                     doc.LoadXml(bounds);
                     System.Xml.XmlNode root = doc["root"]; //NOXLATE
                     if (root["Bounds"] != null) //NOXLATE
@@ -165,10 +165,10 @@
                     return;
             }
 
-            m_bounds = "<Bounds west=\"" + MinX.Text + "\" east=\"" + MaxX.Text + "\" south=\"" + MinY.Text + "\" north=\"" + MaxY.Text + "\" "; //NOXLATE
+            m_bounds = $"<Bounds west=\"{MinX.Text}\" east=\"{MaxX.Text}\" south=\"{MinY.Text}\" north=\"{MaxY.Text}\" "; //NOXLATE
             if (srs != null)
             {
-                m_bounds += " SRS=\"" + srs + "\""; //NOXLATE
+                m_bounds += $" SRS=\"{srs}\""; //NOXLATE
             }
             m_bounds += " />"; //NOXLATE
 

Modified: trunk/Tools/Maestro/Maestro.Base/UI/ConfirmDeleteResourcesDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/ConfirmDeleteResourcesDialog.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/UI/ConfirmDeleteResourcesDialog.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -53,7 +53,7 @@
                 {
                     node.Nodes.Add(res.ResourceId);
                 }
-                node.Text += " (" + node.Nodes.Count + ")"; //NOXLATE
+                node.Text += $" ({node.Nodes.Count})"; //NOXLATE
             }
         }
 

Modified: trunk/Tools/Maestro/Maestro.Base/UI/ISiteExplorer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/ISiteExplorer.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/UI/ISiteExplorer.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -115,7 +115,7 @@
         /// <summary>
         /// Gets the affected site explorer items
         /// </summary>
-        public RepositoryItem[] Items { get; private set; }
+        public RepositoryItem[] Items { get; }
     }
 
     /// <summary>

Modified: trunk/Tools/Maestro/Maestro.Base/UI/LabelLocalizationDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/LabelLocalizationDialog.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/UI/LabelLocalizationDialog.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -35,7 +35,7 @@
             InitializeComponent();
         }
 
-        private BindingList<LocalizableElement> _elements;
+        private readonly BindingList<LocalizableElement> _elements;
 
         public LabelLocalizationDialog(XmlDocument doc, string[] localizableTags)
             : this()
@@ -119,7 +119,7 @@
             }
         }
 
-        public string Label { get; private set; }
+        public string Label { get; }
 
         private string _translation;
 

Modified: trunk/Tools/Maestro/Maestro.Base/UI/MessageViewer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/MessageViewer.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/UI/MessageViewer.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -53,7 +53,7 @@
         {
             if (!txtMessages.IsDisposed)
             {
-                txtMessages.AppendText(string.Format("[{0}]: {1}", msg.LogDate.ToString("dd MMM yyyy hh:mm:ss"), msg.Message)); //NOXLATE
+                txtMessages.AppendText($"[{msg.LogDate.ToString("dd MMM yyyy hh:mm:ss")}]: {msg.Message}"); //NOXLATE
                 txtMessages.ScrollToCaret();
             }
         }

Modified: trunk/Tools/Maestro/Maestro.Base/UI/NewFolderDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/NewFolderDialog.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/UI/NewFolderDialog.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -28,7 +28,7 @@
 {
     internal partial class NewFolderDialog : Form
     {
-        private List<string> _folderNames;
+        private readonly List<string> _folderNames;
 
         public NewFolderDialog(string name, string[] folderNames)
         {

Modified: trunk/Tools/Maestro/Maestro.Base/UI/OutboundRequestViewer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/OutboundRequestViewer.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/UI/OutboundRequestViewer.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -62,7 +62,7 @@
 
         private void OnRequestDispatched(object sender, OSGeo.MapGuide.MaestroAPI.RequestEventArgs e)
         {
-            string msg = string.Format("[{0}]: {1}", DateTime.Now.ToString("dd MMM yyyy hh:mm:ss"), e.Data); //NOXLATE
+            string msg = $"[{DateTime.Now.ToString("dd MMM yyyy hh:mm:ss")}]: {e.Data}"; //NOXLATE
 
             if (!txtMessages.IsDisposed)
             {

Modified: trunk/Tools/Maestro/Maestro.Base/UI/Preferences/ConfigProperties.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/Preferences/ConfigProperties.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/UI/Preferences/ConfigProperties.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -150,7 +150,7 @@
         /// <summary>
         /// Default locale setting for web-based resource previews
         /// </summary>
-        public static string DefaultPreviewLocale { get { return "en"; } } //NOXLATE
+        public static string DefaultPreviewLocale => "en"; //NOXLATE
 
         /// <summary>
         /// Default setting for "Show tip of the day"

Modified: trunk/Tools/Maestro/Maestro.Base/UI/RepositoryTreeModel.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/RepositoryTreeModel.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/UI/RepositoryTreeModel.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -126,20 +126,14 @@
         /// </summary>
         /// <param name="name"></param>
         /// <returns></returns>
-        public bool Contains(string name)
-        {
-            return _children.ContainsKey(name);
-        }
+        public bool Contains(string name) => _children.ContainsKey(name);
 
         /// <summary>
         /// Gets the child RepositoryItem by its name
         /// </summary>
         /// <param name="name"></param>
         /// <returns></returns>
-        public RepositoryItem this[string name]
-        {
-            get { return _children[name]; }
-        }
+        public RepositoryItem this[string name] => _children[name];
 
         internal RepositoryTreeModel Model
         {
@@ -159,10 +153,7 @@
         /// <summary>
         /// Gets the children of this item
         /// </summary>
-        public IEnumerable<RepositoryItem> Children
-        {
-            get { return _children.Values; }
-        }
+        public IEnumerable<RepositoryItem> Children => _children.Values;
 
         /// <summary>
         /// Gets the qualified name of this item
@@ -174,7 +165,7 @@
                 if (this.ResourceType == ResourceTypes.Folder.ToString())
                     return this.Name;
                 else
-                    return this.Name + "." + this.ResourceType; //NOXLATE
+                    return $"{this.Name}.{this.ResourceType}"; //NOXLATE
             }
         }
 

Modified: trunk/Tools/Maestro/Maestro.Base/UI/ResourceDependencyListDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/ResourceDependencyListDialog.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/UI/ResourceDependencyListDialog.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -36,8 +36,8 @@
         }
 
         private IList<string> _uplist;
-        private IList<string> _downlist;
-        private IList<string> _selResources;
+        private readonly IList<string> _downlist;
+        private readonly IList<string> _selResources;
 
         public ResourceDependencyListDialog(IList<string> selResources, IList<string> downlist, IList<string> uplist)
             : this()

Modified: trunk/Tools/Maestro/Maestro.Base/UI/ResourceIconCache.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/ResourceIconCache.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/UI/ResourceIconCache.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -63,7 +63,7 @@
     public class ResourceIconCache : IResourceIconCache
     {
         private ImageList _small;
-        private ImageList _large;
+        private readonly ImageList _large;
 
         private ResourceIconCache()
         {
@@ -71,7 +71,7 @@
             _large = new ImageList();
         }
 
-        private const string UNKNOWN = "UNKNOWN"; //NOXLATE
+        private const string UNKNOWN = nameof(UNKNOWN);
 
         /// <summary>
         /// Creates the default image lists

Modified: trunk/Tools/Maestro/Maestro.Base/UI/ResourceIdNavigator.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/ResourceIdNavigator.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/UI/ResourceIdNavigator.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -39,7 +39,7 @@
         // [Resource ID: ][ComboBox: Resource ID][@][ComboBox: Active Connections][ Go =>]
         //
 
-        private ToolStrip _strip;
+        private readonly ToolStrip _strip;
 
         private ToolStripLabel _resIdLabel;
         private ToolStripComboBox _cmbResourceId;

Modified: trunk/Tools/Maestro/Maestro.Base/UI/ResourcePropertiesDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/ResourcePropertiesDialog.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/UI/ResourcePropertiesDialog.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -49,7 +49,7 @@
         }
 
         private IResourceIconCache m_icons;
-        private IServerConnection m_connection;
+        private readonly IServerConnection m_connection;
         private ResourceIdentifier m_resourceId;
 
         private ResourceDocumentHeaderType m_resourceHeader;
@@ -90,8 +90,8 @@
         /// </summary>
         public string OpenResource { get { return m_openResource; } }
 
-        private OpenResourceManager _openMgr;
-        private ISiteExplorer _siteExp;
+        private readonly OpenResourceManager _openMgr;
+        private readonly ISiteExplorer _siteExp;
 
         /// <summary>
         /// Initializes a new instance of the ResourcePropertiesDialog class
@@ -713,11 +713,7 @@
         {
             foreach (ListViewItem lvi in UsersAndGroups.SelectedItems)
             {
-                if (lvi.Tag as UserListUser != null)
-                    lvi.ImageIndex = RWUSER;
-                else
-                    lvi.ImageIndex = RWGROUP;
-
+                lvi.ImageIndex = lvi.Tag as UserListUser != null ? RWUSER : RWGROUP;
                 lvi.SubItems[2].Text = StatusNames[lvi.ImageIndex];
             }
         }
@@ -726,11 +722,7 @@
         {
             foreach (ListViewItem lvi in UsersAndGroups.SelectedItems)
             {
-                if (lvi.Tag as UserListUser != null)
-                    lvi.ImageIndex = ROUSER;
-                else
-                    lvi.ImageIndex = ROGROUP;
-
+                lvi.ImageIndex = lvi.Tag as UserListUser != null ? ROUSER : ROGROUP;
                 lvi.SubItems[2].Text = StatusNames[lvi.ImageIndex];
             }
         }
@@ -739,11 +731,7 @@
         {
             foreach (ListViewItem lvi in UsersAndGroups.SelectedItems)
             {
-                if (lvi.Tag as UserListUser != null)
-                    lvi.ImageIndex = NOUSER;
-                else
-                    lvi.ImageIndex = NOGROUP;
-
+                lvi.ImageIndex = lvi.Tag as UserListUser != null ? NOUSER : NOGROUP;
                 lvi.SubItems[2].Text = StatusNames[lvi.ImageIndex];
             }
         }
@@ -752,11 +740,7 @@
         {
             foreach (ListViewItem lvi in UsersAndGroups.SelectedItems)
             {
-                if (lvi.Tag as UserListUser != null)
-                    lvi.ImageIndex = IHUSER;
-                else
-                    lvi.ImageIndex = IHGROUP;
-
+                lvi.ImageIndex = lvi.Tag as UserListUser != null ? IHUSER : IHGROUP;
                 lvi.SubItems[2].Text = StatusNames[lvi.ImageIndex];
             }
         }
@@ -835,8 +819,8 @@
                 //TODO: Convert wkt to EPSG code and use that?
                 //TODO: Convert to lon/lat
 
-                bounds = "<Bounds west=\"" + env.MinX.ToString(ic) + "\" east=\"" + env.MaxX.ToString(ic) + "\" south=\"" + env.MinY.ToString(ic) + "\" north=\"" + env.MaxY.ToString(ic) + "\" "; //NOXLATE
-                bounds += " SRS=\"" + srs + "\""; //NOXLATE
+                bounds = $"<Bounds west=\"{env.MinX.ToString(ic)}\" east=\"{env.MaxX.ToString(ic)}\" south=\"{env.MinY.ToString(ic)}\" north=\"{env.MaxY.ToString(ic)}\" "; //NOXLATE
+                bounds += $" SRS=\"{srs}\""; //NOXLATE
                 bounds += " />"; //NOXLATE
 
                 m_isUpdating = false;
@@ -1042,7 +1026,7 @@
                     var cs = picker.SelectedCoordSys;
                     if (!string.IsNullOrEmpty(cs.EPSG))
                     {
-                        txtPrimarySRS.Text = "EPSG:" + cs.EPSG; //NOXLATE
+                        txtPrimarySRS.Text = $"EPSG:{cs.EPSG}"; //NOXLATE
                     }
                 }
             }
@@ -1057,7 +1041,7 @@
                     var cs = picker.SelectedCoordSys;
                     if (!string.IsNullOrEmpty(cs.EPSG))
                     {
-                        txtOtherSRS.Text = "EPSG:" + cs.EPSG; //NOXLATE
+                        txtOtherSRS.Text = $"EPSG:{cs.EPSG}"; //NOXLATE
                     }
                 }
             }

Modified: trunk/Tools/Maestro/Maestro.Base/UI/SiteExplorer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/SiteExplorer.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/UI/SiteExplorer.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -87,8 +87,8 @@
         {
             foreach (var item in tsSiteExplorer.Items)
             {
-                if (item is IStatusUpdate)
-                    ((IStatusUpdate)item).UpdateStatus();
+                var stupd = item as IStatusUpdate;
+                stupd?.UpdateStatus();
             }
         }
 
@@ -148,7 +148,7 @@
         }
 
         private RepositoryTreeModel _model;
-        private ServerConnectionManager _connManager;
+        private readonly ServerConnectionManager _connManager;
 
         protected override void OnLoad(EventArgs e)
         {
@@ -474,7 +474,7 @@
 
                         foreach (var fid in folders)
                         {
-                            LoggingService.Info("Refreshing: " + fid + " on " + connectionName);  //NOXLATE
+                            LoggingService.Info($"Refreshing: {fid} on {connectionName}");  //NOXLATE
                             RefreshModel(connectionName, fid);
                         }
                     }
@@ -608,7 +608,7 @@
             foreach (var resId in sourceIds)
             {
                 var dstId = resId.Replace(rootSourceParent, folderId);
-                System.Diagnostics.Trace.TraceInformation("{0} => {1}", resId, dstId); //NOXLATE
+                System.Diagnostics.Trace.TraceInformation($"{resId} => {dstId}"); //NOXLATE
                 targets.Add(dstId);
             }
 
@@ -805,13 +805,13 @@
                         //otherwise the content *inside* the source folder is
                         //moved instead of the folder itself!
                         var rid = new ResourceIdentifier(r);
-                        var target = folderId + rid.Name + "/"; //NOXLATE
+                        var target = $"{folderId + rid.Name}/"; //NOXLATE
                         conn.ResourceService.MoveResourceWithReferences(r, target, null, cb);
                     }
                     else
                     {
                         var rid = new ResourceIdentifier(r);
-                        var target = folderId + rid.Name + "." + rid.Extension; //NOXLATE
+                        var target = $"{folderId + rid.Name}.{rid.Extension}"; //NOXLATE
                         if (omgr.IsOpen(r, conn))
                         {
                             notMovedFromSource.Add(r);

Modified: trunk/Tools/Maestro/Maestro.Base/UI/TipOfTheDayDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/TipOfTheDayDialog.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/UI/TipOfTheDayDialog.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -59,7 +59,7 @@
             string totdRoot = Path.Combine(FileUtility.ApplicationRootPath, "Data/TipOfTheDay"); //NOXLATE
             var ci = Thread.CurrentThread.CurrentUICulture;
             //Try to find a localized source based on current UI culture, fallback to english if none found
-            string path = Path.Combine(totdRoot, ci.Name + ".xml"); //NOXLATE
+            string path = Path.Combine(totdRoot, $"{ci.Name}.xml"); //NOXLATE
             if (!File.Exists(path))
                 path = Path.Combine(totdRoot, "en.xml"); //NOXLATE
             doc.Load(path);

Modified: trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -37,7 +37,7 @@
     {
         private List<KeyValuePair<string, ValidationIssue[]>> m_issues = new List<KeyValuePair<string, ValidationIssue[]>>();
 
-        private Action<IResource> _openAction;
+        private readonly Action<IResource> _openAction;
 
         /// <summary>
         /// Creates a new instance

Modified: trunk/Tools/Maestro/Maestro.Base/WorkbenchInitializer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/WorkbenchInitializer.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Base/WorkbenchInitializer.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -45,7 +45,7 @@
         /// <summary>
         /// Gets whether the workbench will start fully maximized
         /// </summary>
-        public bool StartMaximized { get; private set; }
+        public bool StartMaximized { get; }
 
         /// <summary>
         /// Gets the main window icon

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/CoordinateSystemPicker.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/CoordinateSystemPicker.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/CoordinateSystemPicker.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -77,7 +77,7 @@
             CoordinateWait.Visible = true;
             CoordinateWait.BringToFront();
             this.Refresh();
-            _cat.FindCoordSys(""); //NOXLATE
+            _cat.FindCoordSys(string.Empty);
 
             CoordinateSystemDefinitionBase[] items = null;
             try
@@ -118,7 +118,7 @@
                 CoordSysCodeText.EndUpdate();
             }
 
-            if (WKTText.Text != "") //NOXLATE
+            if (WKTText.Text != string.Empty)
             {
                 SelectByWKT.Checked = true;
                 ValidateWKT_Click(null, null);
@@ -214,7 +214,7 @@
             try
             {
                 m_epsgCoordSys = null;
-                m_epsgCoordSys = _cat.FindCoordSys("EPSG:" + EPSGCodeText.Text); //NOXLATE
+                m_epsgCoordSys = _cat.FindCoordSys($"EPSG:{EPSGCodeText.Text}"); //NOXLATE
                 if (m_epsgCoordSys == null)
                 {
                     string s = _cat.ConvertEpsgCodeToWkt(EPSGCodeText.Text);
@@ -353,10 +353,10 @@
                     try { CoordinateSystem.SelectedItem = selectedCoordsys; }
                     catch { }
                 if (!SelectByCoordSysCode.Checked)
-                    try { CoordSysCodeText.Text = selectedCoordsys == null ? "" : selectedCoordsys.Code; } //NOXLATE
+                    try { CoordSysCodeText.Text = selectedCoordsys == null ? string.Empty : selectedCoordsys.Code; } //NOXLATE
                     catch { }
                 if (!SelectByWKT.Checked)
-                    try { WKTText.Text = selectedCoordsys == null ? "" : selectedCoordsys.WKT; } //NOXLATE
+                    try { WKTText.Text = selectedCoordsys == null ? string.Empty : selectedCoordsys.WKT; } //NOXLATE
                     catch { }
                 if (!SelectByEPSGCode.Checked)
                     try { EPSGCodeText.Text = selectedCoordsys.EPSG; }

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/EditorBindableCollapsiblePanel.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/EditorBindableCollapsiblePanel.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/EditorBindableCollapsiblePanel.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -102,7 +102,7 @@
             //
             // EditorBindableCollapsiblePanel
             //
-            this.Name = "EditorBindableCollapsiblePanel"; //NOXLATE
+            this.Name = nameof(EditorBindableCollapsiblePanel);
             this.ResumeLayout(false);
         }
     }

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/Expression/FdoExpressionCompletionDataProvider.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/Expression/FdoExpressionCompletionDataProvider.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/Expression/FdoExpressionCompletionDataProvider.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -288,7 +288,7 @@
             return new Descriptor()
             {
                 Name = opName.ToUpper(),
-                Description = "[property] " + opName + " [number]", //NOXLATE
+                Description = $"[property] {opName} [number]", //NOXLATE
                 AppendText = " [number]" //NOXLATE
             };
         }
@@ -298,7 +298,7 @@
             return new Descriptor()
             {
                 Name = opName.ToUpper(),
-                Description = "[geometry] " + opName + " GeomFromText('geometry wkt')", //NOXLATE
+                Description = $"[geometry] {opName} GeomFromText('geometry wkt')", //NOXLATE
                 AppendText = " GeomFromText('geometry wkt')" //NOXLATE
             };
         }
@@ -331,7 +331,6 @@
         private Descriptor CreateFdoFunctionSignatureDescriptor(IFdoFunctionDefintion func, IFdoFunctionDefintionSignature sig)
         {
             var desc = new Descriptor();
-            string fmt = "{0}({1})"; //NOXLATE
             List<string> args = new List<string>();
             foreach (var argDef in sig.Arguments)
             {
@@ -339,10 +338,10 @@
             }
             string argsStr = StringifyFunctionArgs(args);
             string argDesc = DescribeSignature(sig);
-            string expr = string.Format(fmt, func.Name, argsStr); //NOXLATE
+            string expr = $"{func.Name}({argsStr})"; //NOXLAT
             desc.Name = expr;
             desc.Description = string.Format(Strings.ExprEditorFunctionDesc, expr, func.Description, argDesc, sig.ReturnType, Environment.NewLine);
-            desc.AppendText = "";
+            desc.AppendText = string.Empty;
             return desc;
         }
 

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/Expression/FdoExpressionValidator.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/Expression/FdoExpressionValidator.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/Expression/FdoExpressionValidator.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -1,23 +1,23 @@
-#region Disclaimer / License
-
-// Copyright (C) 2015, Jackie Ng
-// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
+#region Disclaimer / License
+
+// Copyright (C) 2015, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
 #endregion Disclaimer / License
 using OSGeo.FDO.Expressions;
 using OSGeo.MapGuide.MaestroAPI.Schema;

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -167,13 +167,12 @@
             var dict = new Dictionary<string, IFdoFunctionDefintionSignature>();
             foreach (var sig in func.Signatures)
             {
-                string fmt = "{0}({1})"; //NOXLATE
                 List<string> args = new List<string>();
                 foreach (var argDef in sig.Arguments)
                 {
                     args.Add(argDef.Name.Trim());
                 }
-                string expr = string.Format(fmt, func.Name, FdoExpressionCompletionDataProvider.StringifyFunctionArgs(args));
+                string expr = $"{func.Name}({FdoExpressionCompletionDataProvider.StringifyFunctionArgs(args)})"; //NOXLATE
                 if (!dict.ContainsKey(expr))
                     dict[expr] = sig;
             }
@@ -220,14 +219,13 @@
                     ToolStripMenuItem btn = new ToolStripMenuItem();
                     btn.Name = name;
                     btn.ToolTipText = desc;
-
-                    string fmt = "{0}({1})"; //NOXLATE
+                    
                     List<string> args = new List<string>();
                     foreach (var argDef in sig.Arguments)
                     {
                         args.Add(argDef.Name.Trim());
                     }
-                    string expr = string.Format(fmt, name, FdoExpressionCompletionDataProvider.StringifyFunctionArgs(args));
+                    string expr = $"{name}({FdoExpressionCompletionDataProvider.StringifyFunctionArgs(args)})";
                     btn.Text = expr;
                     btn.Click += (s, e) =>
                     {
@@ -342,28 +340,30 @@
             LookupValues.Enabled = ColumnName.SelectedIndex >= 0;
         }
 
+        const string UNIQ_VALS = nameof(UNIQ_VALS);
+
         private void LookupValues_Click(object sender, EventArgs e)
         {
             //Use UNIQUE() method first. This should work in most cases
             using (new WaitCursor(this))
             {
                 string filter = null;
-                var expr = "UNIQUE(" + ColumnName.Text + ")"; //NOXLATE
+                var expr = $"UNIQUE({ColumnName.Text})"; //NOXLATE
                 bool bFallback = false;
                 ColumnValue.Items.Clear();
                 ColumnValue.Tag = null;
                 try
                 {
                     using (var rdr = _featSvc.AggregateQueryFeatureSource(m_featureSource, _cls.QualifiedName, filter, new System.Collections.Specialized.NameValueCollection() {
-                            { "UNIQ_VALS", expr } //NOXLATE
+                            { UNIQ_VALS, expr }
                         }))
                     {
-                        ColumnValue.Tag = rdr.GetPropertyType("UNIQ_VALS"); //NOXLATE
+                        ColumnValue.Tag = rdr.GetPropertyType(UNIQ_VALS);
                         while (rdr.ReadNext())
                         {
-                            if (!rdr.IsNull("UNIQ_VALS")) //NOXLATE
+                            if (!rdr.IsNull(UNIQ_VALS))
                             {
-                                object value = rdr["UNIQ_VALS"]; //NOXLATE
+                                object value = rdr[UNIQ_VALS];
                                 ColumnValue.Items.Add(value);
                             }
                         }
@@ -418,7 +418,7 @@
                                 hasNull = true;
                                 rawEx = ex;
                                 retry = true;
-                                filter = ColumnName.Text + " != NULL"; //NOXLATE
+                                filter = $"{ColumnName.Text} != NULL"; //NOXLATE
                             }
                             else if (rawEx != null)
                                 throw rawEx;
@@ -462,12 +462,12 @@
                 {
                     if (ColumnValue.Tag == typeof(string) && (ColumnValue.SelectedIndex != 0 || ColumnValue.Text != "NULL")) //NOXLATE
                     {
-                        InsertText("'" + ColumnValue.Text + "'"); //NOXLATE
+                        InsertText($"'{ColumnValue.Text}'"); //NOXLATE
                     }
                     else
                     {
                         if (tag is PropertyValueType && (PropertyValueType)tag == PropertyValueType.String)
-                            InsertText("'" + ColumnValue.Text + "'"); //NOXLATE
+                            InsertText($"'{ColumnValue.Text}'"); //NOXLATE
                         else
                             InsertText(ColumnValue.Text);
                     }
@@ -481,7 +481,7 @@
 
         private void InsertSpatialFilter(string text)
         {
-            InsertText("[geometry] " + text + " GeomFromText('geometry wkt')");
+            InsertText($"[geometry] {text} GeomFromText('geometry wkt')"); //NOXLATE
         }
 
         private void InsertText(string text)
@@ -509,7 +509,7 @@
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
                     var c = picker.Color;
-                    this.InsertText(string.Format("ARGB({0}, {1}, {2}, {3})", c.A, c.R, c.G, c.B));
+                    this.InsertText($"ARGB({c.A}, {c.R}, {c.G}, {c.B})"); //NOXLATE
                 }
             }
         }
@@ -521,7 +521,7 @@
                 if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
                     var c = picker.Color;
-                    this.InsertText(string.Format("HTMLCOLOR({0}, {1}, {2})", c.R, c.G, c.B));
+                    this.InsertText($"HTMLCOLOR({c.R}, {c.G}, {c.B})"); //NOXLATE
                 }
             }
         }

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/UnmanagedFileBrowser.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/UnmanagedFileBrowser.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/UnmanagedFileBrowser.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -233,7 +233,7 @@
                 {
                     var leftpart = path.Substring(0, path.IndexOf("]")); //NOXLATE
                     var rightpart = path.Substring(path.IndexOf("]") + 1); //NOXLATE
-                    items.Add("%MG_DATA_PATH_ALIAS" + leftpart + "]%" + rightpart); //NOXLATE
+                    items.Add($"%MG_DATA_PATH_ALIAS{leftpart}]%{rightpart}"); //NOXLATE
                 }
                 return items.ToArray();
             }

Modified: trunk/Tools/Maestro/Maestro.Editors/Diagnostics/ServerStatusMonitor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Diagnostics/ServerStatusMonitor.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/Diagnostics/ServerStatusMonitor.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -116,15 +116,9 @@
             DoPoll();
         }
 
-        private static string ParseMs(string value)
-        {
-            return value + " " + Strings.UnitsMs; //NOXLATE
-        }
+        private static string ParseMs(string value) => $"{value} {Strings.UnitsMs}"; //NOXLATE
 
-        private static string ParseSeconds(string value)
-        {
-            return value + " " + Strings.UnitsSeconds; //NOXLATE
-        }
+        private static string ParseSeconds(string value) => $"{value} {Strings.UnitsSeconds}"; //NOXLATE
 
         private static string ParseKb(string valueBytes)
         {
@@ -134,7 +128,7 @@
                                 System.Threading.Thread.CurrentThread.CurrentUICulture,
                                 out d))
             {
-                return (d / 1000.0).ToString(System.Threading.Thread.CurrentThread.CurrentUICulture) + " " + Strings.UnitsKb; //NOXLATE
+                return $"{(d / 1000.0).ToString(System.Threading.Thread.CurrentThread.CurrentUICulture)} {Strings.UnitsKb}"; //NOXLATE
             }
             return valueBytes;
         }

Modified: trunk/Tools/Maestro/Maestro.Editors/DrawingSource/SourceSectionCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/DrawingSource/SourceSectionCtrl.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/DrawingSource/SourceSectionCtrl.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -49,7 +49,7 @@
             resDataCtrl.Init(service);
             resDataCtrl.DataListChanged += new EventHandler(OnResourceDataListChanged);
             resDataCtrl.ResourceDataMarked += new ResourceDataSelectionEventHandler(OnResourceDataMarked);
-            TextBoxBinder.BindText(txtSourceCs, _dws, "CoordinateSpace"); //NOXLATE
+            TextBoxBinder.BindText(txtSourceCs, _dws, nameof(_dws.CoordinateSpace));
             MarkSelected();
         }
 

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/CalculationSettings.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/CalculationSettings.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/CalculationSettings.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -46,8 +46,8 @@
             _edSvc = edSvc;
             _cls = cls;
             _parent = parent;
-            TextBoxBinder.BindText(txtExpression, calc, "Expression"); //NOXLATE
-            TextBoxBinder.BindText(txtName, calc, "Name"); //NOXLATE
+            TextBoxBinder.BindText(txtExpression, calc, nameof(calc.Expression));
+            TextBoxBinder.BindText(txtName, calc, nameof(calc.Name));
         }
 
         private void lnkEdit_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/ExtendedClassSettings.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/ExtendedClassSettings.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/ExtendedClassSettings.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -54,7 +54,7 @@
             if (string.IsNullOrEmpty(_ext.FeatureClass))
                 _ext.FeatureClass = names[0];
 
-            ComboBoxBinder.BindSelectedIndexChanged(cmbBaseClass, "SelectedItem", ext, "FeatureClass"); //NOXLATE
+            ComboBoxBinder.BindSelectedIndexChanged(cmbBaseClass, nameof(cmbBaseClass.SelectedItem), ext, nameof(ext.FeatureClass));
         }
 
         private void OnExtensionPropertyChanged(object sender, PropertyChangedEventArgs e)

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/JoinSettings.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/JoinSettings.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Extensions/JoinSettings.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -128,9 +128,9 @@
             _edSvc = service;
             _edSvc.RegisterCustomNotifier(this);
 
-            TextBoxBinder.BindText(txtJoinName, _rel, "Name"); //NOXLATE
-            TextBoxBinder.BindText(txtFeatureSource, _rel, "ResourceId"); //NOXLATE
-            TextBoxBinder.BindText(txtSecondaryClass, _rel, "AttributeClass"); //NOXLATE
+            TextBoxBinder.BindText(txtJoinName, _rel, nameof(_rel.Name));
+            TextBoxBinder.BindText(txtFeatureSource, _rel, nameof(_rel.ResourceId));
+            TextBoxBinder.BindText(txtSecondaryClass, _rel, nameof(_rel.AttributeClass));
 
             //Init selected classes
             if (!string.IsNullOrEmpty(_rel.ResourceId))

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/ExtensionsCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/ExtensionsCtrl.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/ExtensionsCtrl.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -70,11 +70,11 @@
 
                     PropertyChangedEventHandler extPropChange = (s, evt) =>
                     {
-                        if (evt.PropertyName == "Name") //NOXLATE
+                        if (evt.PropertyName == nameof(ext.Name))
                         {
                             node.Text = ext.Name;
                         }
-                        else if (evt.PropertyName == "FeatureClass") //NOXLATE
+                        else if (evt.PropertyName == nameof(ext.FeatureClass))
                         {
                             node.ToolTipText = string.Format(Strings.ExtendedClassTooltip, ext.FeatureClass);
                         }
@@ -96,11 +96,11 @@
 
                             PropertyChangedEventHandler calcChange = (s, evt) =>
                             {
-                                if (evt.PropertyName == "Name") //NOXLATE
+                                if (evt.PropertyName == nameof(calc.Name))
                                 {
                                     cNode.Text = calc.Name;
                                 }
-                                else if (evt.PropertyName == "Expression") //NOXLATE
+                                else if (evt.PropertyName == nameof(calc.Expression))
                                 {
                                     cNode.ToolTipText = calc.Expression;
                                 }
@@ -122,7 +122,7 @@
 
                             PropertyChangedEventHandler joinChange = (s, evt) =>
                             {
-                                if (evt.PropertyName == "Name") //NOXLATE
+                                if (evt.PropertyName == nameof(join.Name))
                                 {
                                     jNode.Text = join.Name;
                                 }
@@ -162,11 +162,11 @@
             node.ImageIndex = node.SelectedImageIndex = IDX_EXTENSION;
             PropertyChangedEventHandler extChange = (s, evt) =>
             {
-                if (evt.PropertyName == "Name") //NOXLATE
+                if (evt.PropertyName == nameof(ext.Name))
                 {
                     node.Text = ext.Name;
                 }
-                else if (evt.PropertyName == "FeatureClass") //NOXLATE
+                else if (evt.PropertyName == nameof(ext.FeatureClass))
                 {
                     node.ToolTipText = string.Format(Strings.ExtendedClassTooltip, ext.FeatureClass);
                 }
@@ -200,11 +200,11 @@
                     cNode.Tag = calc;
                     PropertyChangedEventHandler calcChange = (s, evt) =>
                     {
-                        if (evt.PropertyName == "Name") //NOXLATE
+                        if (evt.PropertyName == nameof(calc.Name))
                         {
                             cNode.Text = calc.Name;
                         }
-                        else if (evt.PropertyName == "Expression") //NOXLATE
+                        else if (evt.PropertyName == nameof(calc.Expression))
                         {
                             cNode.ToolTipText = calc.Expression;
                         }
@@ -242,7 +242,7 @@
                     jNode.ImageIndex = jNode.SelectedImageIndex = IDX_JOIN;
                     PropertyChangedEventHandler joinChange = (s, evt) =>
                     {
-                        if (evt.PropertyName == "Name") //NOXLATE
+                        if (evt.PropertyName == nameof(join.Name))
                         {
                             jNode.Text = join.Name;
                         }

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/FsEditorMap.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/FsEditorMap.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/FsEditorMap.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -38,7 +38,7 @@
             if (tokens.Length == 2)
                 return provider;
             else
-                return tokens[0] + "." + tokens[1]; //NOXLATE
+                return $"{tokens[0]}.{tokens[1]}"; //NOXLATE
         }
 
         public static CollapsiblePanel GetPanel(string provider)

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/LocalFeatureSourcePreviewCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/LocalFeatureSourcePreviewCtrl.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/LocalFeatureSourcePreviewCtrl.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -286,7 +286,7 @@
             {
                 var pane = new PreviewPane(currentFsId, mode, cls, _edSvc, _caps);
                 var page = new TabPage();
-                page.Text = Strings.StandardQuery + " - " + cls.QualifiedName; //NOXLATE
+                page.Text = $"{Strings.StandardQuery} - {cls.QualifiedName}"; //NOXLATE
                 page.Tag = mode;
                 pane.Dock = DockStyle.Fill;
                 page.Controls.Add(pane);

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/StandardQueryCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/StandardQueryCtrl.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Preview/StandardQueryCtrl.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -144,11 +144,11 @@
         private string GenerateAlias()
         {
             int counter = 1;
-            string name = "Expr" + counter; //NOXLATE
+            string name = $"Expr{counter}"; //NOXLATE
             while (AliasExists(name))
             {
                 counter++;
-                name = "Expr" + counter; //NOXLATE
+                name = $"Expr{counter}"; //NOXLATE
             }
             return name;
         }

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/FileBasedCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/FileBasedCtrl.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/FileBasedCtrl.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -68,10 +68,7 @@
         {
         }
 
-        protected virtual string[] GetUnmanagedFileExtensions()
-        {
-            return new string[0];
-        }
+        protected virtual string[] GetUnmanagedFileExtensions() => new string[0];
 
         private void btnBrowseAlias_Click(object sender, EventArgs e)
         {
@@ -98,12 +95,9 @@
             }
         }
 
-        protected virtual string FileFdoProperty { get { return "File"; } } //NOXLATE
+        protected virtual string FileFdoProperty => "File"; //NOXLATE
 
-        protected virtual bool CanSelectFolders()
-        {
-            return false;
-        }
+        protected virtual bool CanSelectFolders() => false;
 
         private void txtAlias_TextChanged(object sender, EventArgs e)
         {

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/CompositeFileCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/CompositeFileCtrl.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Gdal/CompositeFileCtrl.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -421,7 +421,7 @@
                                 {
                                     var leftpart = file.UnmanagedDataId.Substring(0, file.UnmanagedDataId.IndexOf("]")); //NOXLATE
                                     var rightpart = file.UnmanagedDataId.Substring(file.UnmanagedDataId.IndexOf("]") + 1); //NOXLATE
-                                    var item = "%MG_DATA_PATH_ALIAS" + leftpart + "]%" + rightpart; //NOXLATE
+                                    var item = $"%MG_DATA_PATH_ALIAS{leftpart}]%{rightpart}"; //NOXLATE
                                     files.Add(item);
                                     break;
                                 }

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/GenericCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/GenericCtrl.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/GenericCtrl.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -189,7 +189,7 @@
 
             var cloneFs = (IFeatureSource)_fs.Clone();
             var resSvc = _service.CurrentConnection.ResourceService;
-            resSvc.SaveResourceAs(cloneFs, "Session:" + _service.SessionID + "//" + Guid.NewGuid().ToString() + ".FeatureSource"); //NOXLATE
+            resSvc.SaveResourceAs(cloneFs, $"Session:{_service.SessionID}//{Guid.NewGuid().ToString()}.FeatureSource"); //NOXLATE
 
             cloneFs.ClearConnectionProperties();
             foreach (var key in param.AllKeys)
@@ -355,7 +355,7 @@
             var file = resDataCtrl.MarkedFile;
             if (!string.IsNullOrEmpty(file))
             {
-                var value = "%MG_DATA_FILE_PATH%" + file; //NOXLATE
+                var value = $"%MG_DATA_FILE_PATH%{file}"; //NOXLATE
                 cell.Value = value;
             }
             else

Modified: trunk/Tools/Maestro/Maestro.Editors/Fusion/FlexLayoutSettingsCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Fusion/FlexLayoutSettingsCtrl.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/Fusion/FlexLayoutSettingsCtrl.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -105,7 +105,7 @@
 
                 if (!_edsvc.IsNew)
                 {
-                    txtPublicUrl.Text = baseUrl + txtTemplateUrl.Text + "?ApplicationDefinition=" + _edsvc.ResourceID + "&locale=" + _edsvc.PreviewLocale; //NOXLATE
+                    txtPublicUrl.Text = $"{baseUrl + txtTemplateUrl.Text}?ApplicationDefinition={_edsvc.ResourceID}&locale={_edsvc.PreviewLocale}"; //NOXLATE
                     btnShowInBrowser.Enabled = true;
                 }
                 else

Modified: trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetEditors/WidgetEditorBase.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetEditors/WidgetEditorBase.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetEditors/WidgetEditorBase.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -47,9 +47,9 @@
         /// <param name="edsvc"></param>
         public void Setup(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
         {
-            TextBoxBinder.BindText(txtName, widget, "Name"); //NOXLATE
-            TextBoxBinder.BindText(txtType, widget, "Type"); //NOXLATE
-            TextBoxBinder.BindText(txtLocation, widget, "Location"); //NOXLATE
+            TextBoxBinder.BindText(txtName, widget, nameof(widget.Name));
+            TextBoxBinder.BindText(txtType, widget, nameof(widget.Type));
+            TextBoxBinder.BindText(txtLocation, widget, nameof(widget.Location));
         }
 
         /// <summary>

Modified: trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetEditors/WidgetInfoDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetEditors/WidgetInfoDialog.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetEditors/WidgetInfoDialog.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -36,7 +36,7 @@
         public WidgetInfoDialog(IWidgetInfo info)
         {
             InitializeComponent();
-            this.Text += " - " + info.Type; //NOXLATE
+            this.Text += $" - {info.Type}"; //NOXLATE
             grdExtensionProperties.DataSource = info.Parameters;
         }
     }

Modified: trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetManagementDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetManagementDialog.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetManagementDialog.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -109,7 +109,7 @@
 
             PropertyChangedEventHandler widgetChange = (s, e) =>
             {
-                if (e.PropertyName == "Name") //NOXLATE
+                if (e.PropertyName == nameof(widget.Name))
                     item.Name = widget.Name;
             };
             widget.PropertyChanged += WeakEventHandler.Wrap<PropertyChangedEventHandler>(widgetChange, (eh) => widget.PropertyChanged -= eh);

Modified: trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetSettingsCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetSettingsCtrl.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/Fusion/WidgetSettingsCtrl.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -219,15 +219,16 @@
             {
                 case UiItemFunctionType.Flyout:
                     {
+                        var fly = ((IFlyoutItem)item);
                         node.ImageIndex = node.SelectedImageIndex = IDX_MENU;
-                        node.Text = ((IFlyoutItem)item).Label;
+                        node.Text = fly.Label;
                         node.Tag = item;
 
                         PropertyChangedEventHandler itemChange = (s, evt) =>
                         {
-                            if (evt.PropertyName == "Label") //NOXLATE
+                            if (evt.PropertyName == nameof(fly.Label))
                             {
-                                node.Text = ((IFlyoutItem)item).Label;
+                                node.Text = fly.Label;
                                 OnResourceChanged();
                             }
                         };
@@ -245,13 +246,14 @@
 
                 case UiItemFunctionType.Widget:
                     {
+                        var wgt = ((IWidgetItem)item);
                         node.ImageIndex = node.SelectedImageIndex = IDX_WIDGET;
-                        node.Text = ((IWidgetItem)item).Widget;
+                        node.Text = wgt.Widget;
                         node.Tag = item;
 
                         PropertyChangedEventHandler itemChange = (s, evt) =>
                         {
-                            if (evt.PropertyName == "Widget") //NOXLATE
+                            if (evt.PropertyName == nameof(wgt.Widget))
                             {
                                 node.Text = ((IWidgetItem)item).Widget;
                                 OnResourceChanged();

Modified: trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditor/FindAndReplaceForm.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditor/FindAndReplaceForm.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/Generic/XmlEditor/FindAndReplaceForm.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -61,9 +61,9 @@
         {
             string text = ReplaceMode ? Strings.TextFindAndReplace : Strings.TextFind;
             if (_editor != null && _editor.FileName != null)
-                text += " - " + Path.GetFileName(_editor.FileName); //NOXLATE
+                text += $" - {Path.GetFileName(_editor.FileName)}"; //NOXLATE
             if (_search.HasScanRegion)
-                text += " " + Strings.TextSelectionOnly; //NOXLATE
+                text += $" {Strings.TextSelectionOnly}"; //NOXLATE
             this.Text = text;
         }
 

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Drawing/DrawingLayerSettingsCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Drawing/DrawingLayerSettingsCtrl.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/Drawing/DrawingLayerSettingsCtrl.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -58,16 +58,16 @@
             _dlayer = lyr.SubLayer as IDrawingLayerDefinition;
             Debug.Assert(_dlayer != null);
 
-            TextBoxBinder.BindText(txtDrawingSource, _dlayer, "ResourceId"); //NOXLATE
+            TextBoxBinder.BindText(txtDrawingSource, _dlayer, nameof(_dlayer.ResourceId));
             cmbSheet.DisplayMember = "Title"; //NOXLATE
             cmbSheet.ValueMember = "Name"; //NOXLATE
             cmbSheet.DataSource = _sheets;
             PopulateSheets();
             cmbSheet_SelectedIndexChanged(this, EventArgs.Empty);
-            ComboBoxBinder.BindSelectedIndexChanged(cmbSheet, "SelectedValue", _dlayer, "Sheet"); //NOXLATE
+            ComboBoxBinder.BindSelectedIndexChanged(cmbSheet, nameof(cmbSheet.SelectedValue), _dlayer, nameof(_dlayer.Sheet));
 
-            var minBinding = new Binding("Text", _dlayer, "MinScale"); //NOXLATE
-            var maxBinding = new Binding("Text", _dlayer, "MaxScale"); //NOXLATE
+            var minBinding = new Binding(nameof(txtMinScale.Text), _dlayer, nameof(_dlayer.MinScale));
+            var maxBinding = new Binding(nameof(txtMaxScale.Text), _dlayer, nameof(_dlayer.MaxScale));
 
             minBinding.Format += (sender, ce) =>
             {

Modified: trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/LayerPropertiesSectionCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/LayerPropertiesSectionCtrl.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Editors/LayerDefinition/LayerPropertiesSectionCtrl.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -69,7 +69,7 @@
         private void OnVectorLayerPropertyChanged(object sender, PropertyChangedEventArgs e)
         {
             //Feature Source changed
-            if (e.PropertyName == "ResourceId") //NOXLATE
+            if (e.PropertyName == nameof(_vl.ResourceId))
             {
                 PopulatePropertyList();
             }

Modified: trunk/Tools/Maestro/Maestro.Shared.UI/WaitCursor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Shared.UI/WaitCursor.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/Maestro.Shared.UI/WaitCursor.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -32,7 +32,7 @@
     public class WaitCursor : IDisposable
     {
         private readonly Control _owner;
-        private Cursor _orig;
+        private readonly Cursor _orig;
 
         /// <summary>
         /// Initializes a new instance of the <see cref="WaitCursor"/> class.

Modified: trunk/Tools/Maestro/MgCooker/SetupRun.cs
===================================================================
--- trunk/Tools/Maestro/MgCooker/SetupRun.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/MgCooker/SetupRun.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -324,6 +324,21 @@
             }
         }
 
+        static void PushArg(List<string> args, string name, string value)
+        {
+            args.Add($"--{name}=\"{value}\""); //NOXLATE
+        }
+
+        static void PushArgUnquoted(List<string> args, string name, string value)
+        {
+            args.Add($"--{name}={value}"); //NOXLATE
+        }
+
+        static void PushSwitch(List<string> args, string name)
+        {
+            args.Add($"--{name}"); //NOXLATE
+        }
+
         private void btnSaveScript_Click(object sender, EventArgs e)
         {
             if (System.Environment.OSVersion.Platform == PlatformID.Unix)
@@ -336,22 +351,21 @@
                 //Common args for all map defintions to be tiled
                 List<string> args = new List<string>();
 
-                args.Add("--" + TileRunParameters.PROVIDER + "=\"" + txtProvider.Text + "\""); //NOXLATE
-                args.Add("--" + TileRunParameters.CONNECTIONPARAMS + "=\"" + txtConnectionString.Text + "\""); //NOXLATE
+                PushArg(args, TileRunParameters.PROVIDER, txtProvider.Text);
+                PushArg(args, TileRunParameters.CONNECTIONPARAMS, txtConnectionString.Text);
 
                 if (LimitTileset.Checked)
                 {
                     if (MaxRowLimit.Value > 0)
-                        args.Add("--" + TileRunParameters.LIMITROWS + "=\"" + ((int)MaxRowLimit.Value).ToString() + "\""); //NOXLATE
+                        PushArg(args, TileRunParameters.LIMITROWS, ((int)MaxRowLimit.Value).ToString());
                     if (MaxColLimit.Value > 0)
-                        args.Add("--" + TileRunParameters.LIMITCOLS + "=\"" + ((int)MaxColLimit.Value).ToString() + "\""); //NOXLATE
+                        PushArg(args, TileRunParameters.LIMITCOLS, ((int)MaxColLimit.Value).ToString());
                 }
 
-                args.Add("--" + TileRunParameters.METERSPERUNIT + "=" + ((double)MetersPerUnit.Value).ToString(System.Globalization.CultureInfo.InvariantCulture)); //NOXLATE
-
-                args.Add("--" + TileRunParameters.THREADCOUNT + "=" + ((int)ThreadCount.Value).ToString()); //NOXLATE
+                PushArgUnquoted(args, TileRunParameters.METERSPERUNIT, ((double)MetersPerUnit.Value).ToString(System.Globalization.CultureInfo.InvariantCulture));
+                PushArgUnquoted(args, TileRunParameters.THREADCOUNT, ((int)ThreadCount.Value).ToString());
                 if (RandomTileOrder.Checked)
-                    args.Add("--" + TileRunParameters.RANDOMTILEORDER + ""); //NOXLATE
+                    PushSwitch(args, TileRunParameters.RANDOMTILEORDER);
 
                 string executable = System.IO.Path.GetFileName(System.Reflection.Assembly.GetExecutingAssembly().Location);
                 string cmdExecutable = "MgCookerCmd.exe"; //NOXLATE
@@ -365,7 +379,7 @@
                 string exeName = System.IO.Path.GetFileName(executable);
                 string exePath = System.IO.Path.GetDirectoryName(executable);
 
-                executable = "\"" + executable + "\""; //NOXLATE
+                executable = $"\"{executable}\""; //NOXLATE
 
                 using (System.IO.StreamWriter sw = new System.IO.StreamWriter(saveFileDialog.FileName))
                 {
@@ -385,7 +399,7 @@
                     if (System.Environment.OSVersion.Platform != PlatformID.MacOSX ||
                         System.Environment.OSVersion.Platform != PlatformID.Unix)
                     {
-                        sw.WriteLine("pushd \"" + exePath + "\""); //NOXLATE
+                        sw.WriteLine($"pushd \"{exePath}\""); //NOXLATE
                     }
 
                     foreach (Config c in ReadTree())
@@ -403,8 +417,8 @@
                         }
 
                         argsMap.Add("batch"); //NOXLATE
-                        argsMap.Add("--" + TileRunParameters.MAPDEFINITIONS + "=\"" + c.MapDefinition + "\"");
-                        argsMap.Add("--" + TileRunParameters.BASEGROUPS + "=\"" + c.Group + "\"");
+                        PushArg(argsMap, TileRunParameters.MAPDEFINITIONS, c.MapDefinition);
+                        PushArg(argsMap, TileRunParameters.BASEGROUPS, c.Group);
                         StringBuilder si = new StringBuilder("--" + TileRunParameters.SCALEINDEX + "="); //NOXLATE
                         for (int i = 0; i < c.ScaleIndexes.Length; i++)
                         {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ArgumentParser.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ArgumentParser.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ArgumentParser.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -35,7 +35,7 @@
     /// </remarks>
     public class ArgumentParser
     {
-        private Dictionary<string, string> _values;
+        private readonly Dictionary<string, string> _values;
 
         /// <summary>
         /// Constructs a new instance

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/ExecuteLoadProcedure.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/ExecuteLoadProcedure.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/ExecuteLoadProcedure.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -74,7 +74,6 @@
         public IServerConnection Parent
         {
             get;
-            private set;
         }
 
         /// <summary>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/FeatureManipulationCommandImpl.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/FeatureManipulationCommandImpl.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/FeatureManipulationCommandImpl.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -54,7 +54,6 @@
         public IServerConnection Parent
         {
             get;
-            private set;
         }
 
         /// <summary>
@@ -184,7 +183,7 @@
         /// Initializes a new instance of the <see cref="DefaultUpdateCommand<TConn>"/> class.
         /// </summary>
         /// <param name="parent">The parent.</param>
-        public DefaultUpdateCommand(TConn parent)
+        protected DefaultUpdateCommand(TConn parent)
             : base(parent)
         {
         }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ConnectionProviderRegistry.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ConnectionProviderRegistry.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ConnectionProviderRegistry.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -38,13 +38,13 @@
         /// Gets or sets the name.
         /// </summary>
         /// <value>The name.</value>
-        public string Name { get; private set; }
+        public string Name { get; }
 
         /// <summary>
         /// Gets or sets the description.
         /// </summary>
         /// <value>The description.</value>
-        public string Description { get; private set; }
+        public string Description { get; }
 
         /// <summary>
         /// Gets or sets a value indicating whether this instance is multi platform.
@@ -52,19 +52,19 @@
         /// <value>
         /// 	<c>true</c> if this instance is multi platform; otherwise, <c>false</c>.
         /// </value>
-        public bool IsMultiPlatform { get; private set; }
+        public bool IsMultiPlatform { get; }
 
         /// <summary>
         /// Gets whether this provider has global connection state. This effectively indicates that subsequent connections after the first one
         /// created for this provider will re-use the same connection information and may/will disregard that values of the connection parameters
         /// you pass in
         /// </summary>
-        public bool HasGlobalState { get; private set; }
+        public bool HasGlobalState { get; }
 
         /// <summary>
         /// Gets the path of the assembly containing the provider implementation
         /// </summary>
-        public string AssemblyPath { get; private set; }
+        public string AssemblyPath { get; }
 
         /// <summary>
         /// Initializes a new instance of the <see cref="ConnectionProviderEntry"/> class.
@@ -143,7 +143,7 @@
         private const string PROVIDER_CONFIG = "ConnectionProviders.xml"; //NOXLATE
 
         private static Dictionary<string, ConnectionFactoryMethod> _ctors;
-        private static List<ConnectionProviderEntry> _providers;
+        private readonly static List<ConnectionProviderEntry> _providers;
         private static Dictionary<string, int> _callCount;
 
         private static string _dllRoot;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/ActualCoordinateSystem.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/ActualCoordinateSystem.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/ActualCoordinateSystem.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -32,7 +32,7 @@
 {
     internal class ActualCoordinateSystem : MeterBasedCoordinateSystem
     {
-        private ICoordinateTransformation m_transform;
+        private readonly ICoordinateTransformation m_transform;
         private const string XY_M = "LOCAL_CS[\"Non-Earth (Meter)\",LOCAL_DATUM[\"Local Datum\",0],UNIT[\"Meter\", 1],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]]"; //NOXLATE
 
         internal ActualCoordinateSystem(ICoordinateSystem coordinateSystem)

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystem.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystem.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystem.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -208,7 +208,7 @@
         public override string ToString()
         {
             if (m_description == null && m_code == null)
-                return m_wkt == null ? "<null>" : m_wkt; //NOXLATE
+                return m_wkt ?? "<null>"; //NOXLATE
             else if (m_description == null)
                 return m_code;
             else if (m_code == null)

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystemBase.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystemBase.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystemBase.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -66,13 +66,17 @@
             if (csb == null && coordSys != null)
             {
                 IUnit unit = coordSys.GetUnits(0);
-                if (unit is IAngularUnit)
+                var au = unit as IAngularUnit;
+                var lu = unit as ILinearUnit;
+                if (au != null)
                 {
-                    double radians = (unit as IAngularUnit).RadiansPerUnit;
+                    double radians = au.RadiansPerUnit;
                     csb = new DegreeBasedCoordinateSystem();
                 }
-                else if (unit is ILinearUnit)
-                    csb = new MeterBasedCoordinateSystem(((ILinearUnit)unit).MetersPerUnit, ((ILinearUnit)unit).MetersPerUnit);
+                else if (lu != null)
+                {
+                    csb = new MeterBasedCoordinateSystem(lu.MetersPerUnit, lu.MetersPerUnit);
+                }
             }
 
             if (csb == null)

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystemCategory.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystemCategory.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CoordinateSystem/CoordinateSystemCategory.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -28,7 +28,7 @@
     public abstract class CoordinateSystemCategory
     {
         private ICoordinateSystemCatalog _parent;
-        private string m_name;
+        private readonly string m_name;
         private CoordinateSystemDefinitionBase[] m_items;
 
         /// <summary>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CrossConnection/ResourceMigrator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CrossConnection/ResourceMigrator.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CrossConnection/ResourceMigrator.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -68,7 +68,7 @@
     public class ResourceMigrator
     {
         private IServerConnection _source;
-        private IServerConnection _target;
+        private readonly IServerConnection _target;
 
         private IResourceConverter _converter;
 

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CrossConnection/ResourceRebaser.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CrossConnection/ResourceRebaser.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/CrossConnection/ResourceRebaser.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -52,7 +52,6 @@
         public string SourceFolder
         {
             get;
-            private set;
         }
 
         /// <summary>
@@ -61,7 +60,6 @@
         public string TargetFolder
         {
             get;
-            private set;
         }
     }
 
@@ -81,7 +79,7 @@
     /// </example>
     public class ResourceRebaser
     {
-        private IResource _res;
+        private readonly IResource _res;
 
         /// <summary>
         /// Initializes a new instance of the <see cref="ResourceRebaser"/> class.

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Enums.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Enums.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Enums.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -105,7 +105,7 @@
     /// </summary>
     public static class SiteResourceType
     {
-        private static ResourceTypes[] _resTypes;
+        private static readonly ResourceTypes[] _resTypes;
 
         static SiteResourceType()
         {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Exceptions/UnsupportedResourceTypeException.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Exceptions/UnsupportedResourceTypeException.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Exceptions/UnsupportedResourceTypeException.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -89,6 +89,6 @@
         /// Gets or sets the type of the resource.
         /// </summary>
         /// <value>The type of the resource.</value>
-        public string ResourceType { get; private set; }
+        public string ResourceType { get; }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Exceptions/UnsupportedServiceTypeException.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Exceptions/UnsupportedServiceTypeException.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Exceptions/UnsupportedServiceTypeException.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -91,6 +91,6 @@
         /// Gets or sets the type of the service.
         /// </summary>
         /// <value>The type of the service.</value>
-        public ServiceType ServiceType { get; private set; }
+        public ServiceType ServiceType { get; }
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Feature/FeatureBase.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Feature/FeatureBase.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Feature/FeatureBase.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -31,7 +31,7 @@
     /// </summary>
     public class FeatureBase : RecordBase, IFeature
     {
-        private ClassDefinition _clsDef;
+        private readonly ClassDefinition _clsDef;
 
         /// <summary>
         /// Initializes a new instance of the <see cref="FeatureBase"/> class.

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/IServerConnection.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/IServerConnection.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/IServerConnection.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -242,7 +242,7 @@
         /// Gets or sets the data.
         /// </summary>
         /// <value>The data.</value>
-        public string Data { get; private set; }
+        public string Data { get; }
 
         /// <summary>
         /// Initializes a new instance of the <see cref="RequestEventArgs"/> class.

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Internal/FixedWKTReader.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Internal/FixedWKTReader.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Internal/FixedWKTReader.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -37,7 +37,7 @@
     /// </summary>
     public class FixedWKTReader
     {
-        private IGeometryFactory geometryFactory;
+        private readonly IGeometryFactory geometryFactory;
         private IPrecisionModel precisionModel;
         private int index;
 
@@ -100,7 +100,7 @@
             }
             catch (IOException e)
             {
-                throw new ParseException(e.ToString());
+                throw new GeoAPI.IO.ParseException(e.ToString());
             }
         }
 
@@ -204,19 +204,19 @@
             if (token == null)
                 throw new ArgumentNullException(nameof(tokens), Strings.ErrorTokenListContainsNullValue); //NOXLATE
             else if (token is EofToken)
-                throw new ParseException(Strings.ErrorParseExpectedNumberEos);
+                throw new GeoAPI.IO.ParseException(Strings.ErrorParseExpectedNumberEos);
             else if (token is EolToken)
-                throw new ParseException(Strings.ErrorParseExpectedNumberEol);
+                throw new GeoAPI.IO.ParseException(Strings.ErrorParseExpectedNumberEol);
             else if (token is FloatToken || token is IntToken)
                 return (double)token.ConvertToType(typeof(double));
             else if (token is WordToken)
-                throw new ParseException(string.Format(Strings.ErrorParseExpectedNumberGotWord, token.StringValue));
+                throw new GeoAPI.IO.ParseException(string.Format(Strings.ErrorParseExpectedNumberGotWord, token.StringValue));
             else if (token.StringValue == "(") //NOXLATE
-                throw new ParseException(string.Format(Strings.ErrorParseExpectedNumber, '(')); //NOXLATE
+                throw new GeoAPI.IO.ParseException(string.Format(Strings.ErrorParseExpectedNumber, '(')); //NOXLATE
             else if (token.StringValue == ")") //NOXLATE
-                throw new ParseException(string.Format(Strings.ErrorParseExpectedNumber, ')')); //NOXLATE
+                throw new GeoAPI.IO.ParseException(string.Format(Strings.ErrorParseExpectedNumber, ')')); //NOXLATE
             else if (token.StringValue == ",") //NOXLATE
-                throw new ParseException(string.Format(Strings.ErrorParseExpectedNumber, ',')); //NOXLATE
+                throw new GeoAPI.IO.ParseException(string.Format(Strings.ErrorParseExpectedNumber, ',')); //NOXLATE
             else
             {
                 Assert.ShouldNeverReachHere();
@@ -256,7 +256,7 @@
             }
             if (nextWord.Equals("EMPTY") || nextWord.Equals("(")) //NOXLATE
                 return nextWord;
-            throw new ParseException(string.Format(Strings.ErrorParseExpectedEmpty, nextWord));
+            throw new GeoAPI.IO.ParseException(string.Format(Strings.ErrorParseExpectedEmpty, nextWord));
         }
 
         /// <summary>
@@ -274,7 +274,7 @@
             if (nextWord.Equals(",") || nextWord.Equals(")")) //NOXLATE
                 return nextWord;
 
-            throw new ParseException(string.Format(Strings.ErrorParseExpectedCloserOrComma, nextWord));
+            throw new GeoAPI.IO.ParseException(string.Format(Strings.ErrorParseExpectedCloserOrComma, nextWord));
         }
 
         /// <summary>
@@ -291,7 +291,7 @@
             string nextWord = GetNextWord(tokens);
             if (nextWord.Equals(")")) //NOXLATE
                 return nextWord;
-            throw new ParseException(string.Format(Strings.ErrorParseExpectedCloser, nextWord));
+            throw new GeoAPI.IO.ParseException(string.Format(Strings.ErrorParseExpectedCloser, nextWord));
         }
 
         /// <summary>
@@ -307,11 +307,11 @@
             Token token = tokens[index++] as Token;
 
             if (token is EofToken)
-                throw new ParseException(Strings.ErrorParseExpectedNumberEos);
+                throw new GeoAPI.IO.ParseException(Strings.ErrorParseExpectedNumberEos);
             else if (token is EolToken)
-                throw new ParseException(Strings.ErrorParseExpectedNumberEol);
+                throw new GeoAPI.IO.ParseException(Strings.ErrorParseExpectedNumberEol);
             else if (token is FloatToken || token is IntToken)
-                throw new ParseException(string.Format(Strings.ErrorParseExpectedWord, token.StringValue));
+                throw new GeoAPI.IO.ParseException(string.Format(Strings.ErrorParseExpectedWord, token.StringValue));
             else if (token is WordToken)
                 return token.StringValue.ToUpper();
             else if (token.StringValue == "(") //NOXLATE
@@ -372,7 +372,7 @@
                 returned = ReadMultiPolygonText(tokens);
             else if (type.Equals("GEOMETRYCOLLECTION")) //NOXLATE
                 returned = ReadGeometryCollectionText(tokens);
-            else throw new ParseException(string.Format(Strings.ErrorParseUnknownType, type));
+            else throw new GeoAPI.IO.ParseException(string.Format(Strings.ErrorParseUnknownType, type));
 
             if (returned == null)
                 throw new NullReferenceException(Strings.ErrorParseGeometryRead);

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/LengthyOperationCallbackArgs.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/LengthyOperationCallbackArgs.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/LengthyOperationCallbackArgs.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -146,7 +146,7 @@
                 Failure
             }
 
-            private string m_itempath;
+            private readonly string m_itempath;
             private OperationStatus m_status;
 
             /// <summary>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/MapSelection.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/MapSelection.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/MapSelection.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -74,7 +74,7 @@
     public class MapSelection : IBinarySerializable, IList<MapSelection.LayerSelection>
     {
         private RuntimeMap _map;
-        private List<LayerSelection> _layers;
+        private readonly List<LayerSelection> _layers;
 
         /// <summary>
         /// Constructor
@@ -163,7 +163,7 @@
         public class LayerSelection : IList<object[]>
         {
             private RuntimeMapLayer m_layer;
-            private List<object[]> m_list = new List<object[]>();
+            private readonly List<object[]> m_list = new List<object[]>();
 
             /// <summary>
             /// Gets the layer that contains the selected objects

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMap.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMap.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMap.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -130,9 +130,9 @@
         /// <summary>
         /// Gets the <see cref="T:OSGeo.MapGuide.MaestroAPI.IServerConnection"/> that is attached to this instance
         /// </summary>
-        public IServerConnection CurrentConnection { get; private set; }
+        public IServerConnection CurrentConnection { get; }
 
-        internal Version SiteVersion { get; private set; }
+        internal Version SiteVersion { get; }
 
         /// <summary>
         /// The mapping service
@@ -798,9 +798,9 @@
                 definitionChanged
             };
 
-            public ChangeType Type { get; private set; }
+            public ChangeType Type { get; }
 
-            public string Params { get; private set; }
+            public string Params { get; }
 
             public Change()
             {
@@ -815,11 +815,11 @@
 
         internal class ChangeList
         {
-            public string ObjectId { get; private set; }
+            public string ObjectId { get; }
 
-            public bool IsLayer { get; private set; }
+            public bool IsLayer { get; }
 
-            public List<Change> Changes { get; private set; }
+            public List<Change> Changes { get; }
 
             public ChangeList()
             {
@@ -1148,7 +1148,6 @@
         public RuntimeMapLayerCollection Layers
         {
             get;
-            private set;
         }
 
         /// <summary>
@@ -1157,7 +1156,6 @@
         public RuntimeMapGroupCollection Groups
         {
             get;
-            private set;
         }
 
         /// <summary>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMapLayer.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMapLayer.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMapLayer.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -104,12 +104,12 @@
             /// <summary>
             /// Gets the min scale.
             /// </summary>
-            public double MinScale { get; private set; }
+            public double MinScale { get; }
 
             /// <summary>
             /// Gets the max scale.
             /// </summary>
-            public double MaxScale { get; private set; }
+            public double MaxScale { get; }
         }
 
         //From MgLayerType
@@ -122,7 +122,7 @@
         /// <summary>
         /// Gets the <see cref="T:OSGeo.MapGuide.MaestroAPI.Mapping.RuntimeMap"/> that this layer belongs to
         /// </summary>
-        public RuntimeMap Parent { get; private set; }
+        public RuntimeMap Parent { get; }
 
         /// <summary>
         /// Initializes this instances from the specified Layer Definition

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj	2015-08-10 14:57:50 UTC (rev 8736)
@@ -141,8 +141,6 @@
     <Compile Include="Mapping\NsDoc.cs" />
     <Compile Include="CsHelper.cs" />
     <Compile Include="NsDoc.cs" />
-    <Compile Include="Resource\Comparison\BinaryData.cs" />
-    <Compile Include="Resource\Comparison\CharData.cs" />
     <Compile Include="Resource\Comparison\DiffEngine.cs" />
     <Compile Include="Resource\Comparison\TextFile.cs" />
     <Compile Include="Resource\Conversion\ImageSymbolConverter.cs" />

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Platform.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Platform.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Platform.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -35,7 +35,7 @@
             _mrtType = Type.GetType("Mono.Runtime"); //NOXLATE
         }
 
-        private static Type _mrtType;
+        private static readonly Type _mrtType;
 
         /// <summary>
         /// Gets whether this application is running under the Mono CLR

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/PlatformConnectionBase.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/PlatformConnectionBase.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/PlatformConnectionBase.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -692,58 +692,71 @@
                 if (v == null)
                     continue;
 
-                if (v is string)
-
-                    //If we are at a ResourceId property, update it as needed
-                    if (v is string)
+                //If we are at a ResourceId property, update it as needed
+                string str = v as string;
+                IEnumerable enu = v as IEnumerable;
+                if (str != null)
+                {
+                    bool isResId = pi.Name == "ResourceId"; //NOXLATE
+                    if (!isResId)
                     {
-                        bool isResId = pi.Name == "ResourceId"; //NOXLATE
-                        if (!isResId)
+                        //Search for attributes
+                        object[] xmlAttrs = pi.GetCustomAttributes(typeof(System.Xml.Serialization.XmlElementAttribute), false);
+                        if (xmlAttrs != null)
                         {
-                            //Search for attributes
-                            object[] xmlAttrs = pi.GetCustomAttributes(typeof(System.Xml.Serialization.XmlElementAttribute), false);
-                            if (xmlAttrs != null)
-                                foreach (System.Xml.Serialization.XmlElementAttribute attr in xmlAttrs)
-                                    if (attr.Type == typeof(string) && attr.ElementName == "ResourceId") //NOXLATE
-                                        if (pi.Name == "ResourceId") //NOXLATE
-                                        {
-                                            isResId = true;
-                                            break;
-                                        }
+                            foreach (System.Xml.Serialization.XmlElementAttribute attr in xmlAttrs)
+                            {
+                                if (attr.Type == typeof(string) && attr.ElementName == "ResourceId") //NOXLATE
+                                {
+                                    if (pi.Name == "ResourceId") //NOXLATE
+                                    {
+                                        isResId = true;
+                                        break;
+                                    }
+                                }
+                            }
                         }
+                    }
 
-                        if (isResId)
+                    if (isResId)
+                    {
+                        string current = str;
+
+                        if (current != null)
                         {
-                            string current = v as string;
-
-                            if (current != null)
-                            {
-                                if (folderupdates && current.StartsWith(oldresourcepath))
-                                    pi.SetValue(o, newresourcepath + current.Substring(oldresourcepath.Length), null);
-                                else if (current == oldresourcepath)
-                                    pi.SetValue(o, newresourcepath, null);
-                            }
+                            if (folderupdates && current.StartsWith(oldresourcepath))
+                                pi.SetValue(o, newresourcepath + current.Substring(oldresourcepath.Length), null);
+                            else if (current == oldresourcepath)
+                                pi.SetValue(o, newresourcepath, null);
                         }
                     }
-                    else if (v is IEnumerable)
+                }
+                else if (enu != null)
+                {
+                    //Handle collections
+                    foreach (object ox in enu)
                     {
-                        //Handle collections
-                        System.Collections.IEnumerable srcList = (System.Collections.IEnumerable)v;
-                        foreach (object ox in srcList)
-                            UpdateResourceReferences(ox, oldresourcepath, newresourcepath, folderupdates, visited);
+                        UpdateResourceReferences(ox, oldresourcepath, newresourcepath, folderupdates, visited);
                     }
-                    else if (v.GetType().IsArray)
+                }
+                else
+                {
+                    Type vt = v.GetType();
+                    if (vt.IsArray)
                     {
                         //Handle arrays
-                        System.Array sourceArr = (System.Array)v;
+                        Array sourceArr = (Array)v;
                         for (int i = 0; i < sourceArr.Length; i++)
+                        {
                             UpdateResourceReferences(sourceArr.GetValue(i), oldresourcepath, newresourcepath, folderupdates, visited);
+                        }
                     }
-                    else if (v.GetType().IsClass)
+                    else if (vt.IsClass)
                     {
                         //Handle subobjects
                         UpdateResourceReferences(v, oldresourcepath, newresourcepath, folderupdates, visited);
                     }
+                }
             }
         }
 
@@ -1961,7 +1974,7 @@
 
         private class DefaultCalculator : IMpuCalculator
         {
-            private PlatformConnectionBase _conn;
+            private readonly PlatformConnectionBase _conn;
 
             public DefaultCalculator(PlatformConnectionBase conn)
             {
@@ -2152,10 +2165,7 @@
         {
             var mdf = (IMapDefinition)GetResource(baseMapDefinitionId);
             double mpu = 1.0;
-            if (CsHelper.DefaultCalculator != null)
-                mpu = CsHelper.DefaultCalculator.Calculate(mdf.CoordinateSystem, 1.0);
-            else
-                mpu = InferMPU(mdf.CoordinateSystem, 1.0);
+            mpu = CsHelper.DefaultCalculator != null ? CsHelper.DefaultCalculator.Calculate(mdf.CoordinateSystem, 1.0) : InferMPU(mdf.CoordinateSystem, 1.0);
             return CreateMap(runtimeMapResourceId, mdf, mpu, suppressErrors);
         }
 
@@ -2272,10 +2282,7 @@
         public RuntimeMap CreateMap(string runtimeMapResourceId, IMapDefinition mdf, bool suppressErrors)
         {
             double mpu = 1.0;
-            if (CsHelper.DefaultCalculator != null)
-                mpu = CsHelper.DefaultCalculator.Calculate(mdf.CoordinateSystem, 1.0);
-            else
-                mpu = InferMPU(mdf.CoordinateSystem, 1.0);
+            mpu = CsHelper.DefaultCalculator != null ? CsHelper.DefaultCalculator.Calculate(mdf.CoordinateSystem, 1.0) : InferMPU(mdf.CoordinateSystem, 1.0);
             return CreateMap(runtimeMapResourceId, mdf, mpu, suppressErrors);
         }
 

Deleted: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Comparison/BinaryData.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Comparison/BinaryData.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Comparison/BinaryData.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -1,71 +0,0 @@
-#region Disclaimer / License
-
-// Copyright (C) 2012, Jackie Ng
-// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-// Original code by Michael Potter, made available under Public Domain
-//
-// http://www.codeproject.com/Articles/6943/A-Generic-Reusable-Diff-Algorithm-in-C-II/
-
-#endregion Disclaimer / License
-
-namespace OSGeo.MapGuide.MaestroAPI.Resource.Comparison
-{
-    /*
-    public class BinaryFileDiffList : IDiffList
-    {
-        private byte[] _byteList;
-
-        public BinaryFileDiffList(string fileName)
-        {
-            FileStream fs = null;
-            BinaryReader br = null;
-            try
-            {
-                fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
-                int len = (int)fs.Length;
-                br = new BinaryReader(fs);
-                _byteList = br.ReadBytes(len);
-            }
-            catch (Exception ex)
-            {
-                throw ex;
-            }
-            finally
-            {
-                if (br != null) br.Close();
-                if (fs != null) fs.Close();
-            }
-        }
-
-        #region IDiffList Members
-
-        public int Count()
-        {
-            return _byteList.Length;
-        }
-
-        public IComparable GetByIndex(int index)
-        {
-            return _byteList[index];
-        }
-
-        #endregion IDiffList Members
-    }
-     */
-}
\ No newline at end of file

Deleted: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Comparison/CharData.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Comparison/CharData.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Comparison/CharData.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -1,54 +0,0 @@
-#region Disclaimer / License
-
-// Copyright (C) 2012, Jackie Ng
-// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-//
-
-// Original code by Michael Potter, made available under Public Domain
-//
-// http://www.codeproject.com/Articles/6943/A-Generic-Reusable-Diff-Algorithm-in-C-II/
-
-#endregion Disclaimer / License
-
-namespace OSGeo.MapGuide.MaestroAPI.Resource.Comparison
-{
-    /*
-    public class CharDataDiffList : IDiffList
-    {
-        private char[] _charList;
-
-        public CharDataDiffList(string charData)
-        {
-            _charList = charData.ToCharArray();
-        }
-
-        #region IDiffList Members
-
-        public int Count()
-        {
-            return _charList.Length;
-        }
-
-        public IComparable GetByIndex(int index)
-        {
-            return _charList[index];
-        }
-
-        #endregion IDiffList Members
-    }
-     */
-}
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Comparison/DiffEngine.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Comparison/DiffEngine.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Comparison/DiffEngine.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -76,14 +76,7 @@
                 }
                 else
                 {
-                    if (_length == 0)
-                    {
-                        len = 1;
-                    }
-                    else
-                    {
-                        len = 0;
-                    }
+                    len = _length == 0 ? 1 : 0;
                 }
                 return len;
             }
@@ -158,15 +151,15 @@
     internal class DiffStateList
     {
 #if USE_HASH_TABLE
-		private Hashtable _table;
+        private Hashtable _table;
 #else
-        private DiffState[] _array;
+        private readonly DiffState[] _array;
 #endif
 
         public DiffStateList(int destCount)
         {
 #if USE_HASH_TABLE
-			_table = new Hashtable(Math.Max(9,destCount/10));
+            _table = new Hashtable(Math.Max(9,destCount/10));
 #else
             _array = new DiffState[destCount];
 #endif
@@ -175,12 +168,12 @@
         public DiffState GetByIndex(int index)
         {
 #if USE_HASH_TABLE
-			DiffState retval = (DiffState)_table[index];
-			if (retval == null)
-			{
-				retval = new DiffState();
-				_table.Add(index,retval);
-			}
+            DiffState retval = (DiffState)_table[index];
+            if (retval == null)
+            {
+                retval = new DiffState();
+                _table.Add(index,retval);
+            }
 #else
             DiffState retval = _array[index];
             if (retval == null)
@@ -225,7 +218,7 @@
     public class DiffResultSpan : IComparable
     {
         private const int BAD_INDEX = -1;
-        private int _destIndex;
+        private readonly int _destIndex;
         private int _sourceIndex;
         private int _length;
         private DiffResultSpanStatus _status;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Comparison/TextFile.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Comparison/TextFile.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Comparison/TextFile.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -68,7 +68,7 @@
     /// </summary>
     public class TextFileDiffList : IDiffList
     {
-        private List<TextLine> _lines;
+        private readonly List<TextLine> _lines;
 
         /// <summary>
         /// Creates a new instance

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/IResourceValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/IResourceValidator.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/IResourceValidator.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -77,22 +77,22 @@
         /// <summary>
         /// Gets the validation status code
         /// </summary>
-        public ValidationStatusCode StatusCode { get; private set; }
+        public ValidationStatusCode StatusCode { get; }
 
         /// <summary>
         /// Gets the message for the validation issue
         /// </summary>
-        public string Message { get; private set; }
+        public string Message { get; }
 
         /// <summary>
         /// Gets the status of the validation issue
         /// </summary>
-        public ValidationStatus Status { get; private set; }
+        public ValidationStatus Status { get; }
 
         /// <summary>
         /// Gets the resource this issue pertains to
         /// </summary>
-        public IResource Resource { get; private set; }
+        public IResource Resource { get; }
 
         /// <summary>
         /// Determines whether the specified <see cref="System.Object"/> is equal to this instance.

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseWebLayoutValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseWebLayoutValidator.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseWebLayoutValidator.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -4,6 +4,7 @@
 using OSGeo.MapGuide.ObjectModels.MapDefinition;
 using OSGeo.MapGuide.ObjectModels.WebLayout;
 using System;
+using System.Linq;
 using System.Collections.Generic;
 
 namespace OSGeo.MapGuide.MaestroAPI.Resource.Validation
@@ -82,19 +83,15 @@
                 }
 
                 //Check for duplicate property references in search commands
-                foreach (ICommand cmd in cmdSet.Commands)
+                foreach (ISearchCommand search in cmdSet.Commands.OfType<ISearchCommand>())
                 {
-                    if (cmd is ISearchCommand)
+                    Dictionary<string, string> resColProps = new Dictionary<string, string>();
+                    foreach (IResultColumn resCol in search.ResultColumns.Column)
                     {
-                        ISearchCommand search = (ISearchCommand)cmd;
-                        Dictionary<string, string> resColProps = new Dictionary<string, string>();
-                        foreach (IResultColumn resCol in search.ResultColumns.Column)
-                        {
-                            if (resColProps.ContainsKey(resCol.Property))
-                                issues.Add(new ValidationIssue(layout, ValidationStatus.Error, ValidationStatusCode.Error_WebLayout_DuplicateSearchCommandResultColumn, string.Format(Strings.WL_DuplicateSearchResultColumn, search.Name, resCol.Property)));
-                            else
-                                resColProps.Add(resCol.Property, resCol.Property);
-                        }
+                        if (resColProps.ContainsKey(resCol.Property))
+                            issues.Add(new ValidationIssue(layout, ValidationStatus.Error, ValidationStatusCode.Error_WebLayout_DuplicateSearchCommandResultColumn, string.Format(Strings.WL_DuplicateSearchResultColumn, search.Name, resCol.Property)));
+                        else
+                            resColProps.Add(resCol.Property, resCol.Property);
                     }
                 }
 

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/DrawingSourceValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/DrawingSourceValidator.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/DrawingSourceValidator.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -31,7 +31,7 @@
     /// </summary>
     public class DrawingSourceValidator : IResourceValidator
     {
-        private string _version;
+        private readonly string _version;
 
         internal DrawingSourceValidator(string version = "1.0.0")
         {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/FeatureSourceValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/FeatureSourceValidator.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/FeatureSourceValidator.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -35,7 +35,7 @@
     /// </summary>
     public class FeatureSourceValidator : IResourceValidator
     {
-        private string _version;
+        private readonly string _version;
 
         internal FeatureSourceValidator(string version = "1.0.0")
         {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/LayerDefinitionValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/LayerDefinitionValidator.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/LayerDefinitionValidator.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -29,7 +29,7 @@
     /// </summary>
     public class LayerDefinitionValidator : BaseLayerDefinitionValidator
     {
-        private string _version;
+        private readonly string _version;
 
         internal LayerDefinitionValidator(string version = "1.0.0")
         {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/LoadProcedureValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/LoadProcedureValidator.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/LoadProcedureValidator.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -29,7 +29,7 @@
     /// </summary>
     public class LoadProcedureValidator : BaseLoadProcedureValidator
     {
-        private string _version;
+        private readonly string _version;
 
         internal LoadProcedureValidator(string version = "1.0.0")
         {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/MapDefinitionValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/MapDefinitionValidator.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/MapDefinitionValidator.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -29,7 +29,7 @@
     /// </summary>
     public class MapDefinitionValidator : BaseMapDefinitionValidator
     {
-        private string _version;
+        private readonly string _version;
 
         internal MapDefinitionValidator(string version = "1.0.0")
         {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidationContext.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidationContext.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidationContext.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -52,7 +52,7 @@
         private Dictionary<string, FeatureSourceDescription> _schemas;
         private Dictionary<string, FdoSpatialContextList> _spatialContexts;
 
-        private IServerConnection _conn;
+        private readonly IServerConnection _conn;
 
         /// <summary>
         /// Initializes a new instance of the <see cref="ResourceValidationContext"/> class.

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidatorSet.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidatorSet.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidatorSet.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -44,7 +44,7 @@
     /// </example>
     public static class ResourceValidatorSet
     {
-        private static List<IResourceValidator> m_validators = new List<IResourceValidator>();
+        private static readonly List<IResourceValidator> m_validators = new List<IResourceValidator>();
 
         /// <summary>
         /// Registers the validator.

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/SymbolDefinitionValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/SymbolDefinitionValidator.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/SymbolDefinitionValidator.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -29,7 +29,7 @@
     /// </summary>
     public class SymbolDefinitionValidator : BaseSymbolDefinitionValidator
     {
-        private string _version;
+        private readonly string _version;
 
         internal SymbolDefinitionValidator(string version = "1.0.0")
         {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/WebLayoutValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/WebLayoutValidator.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/WebLayoutValidator.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -29,7 +29,7 @@
     /// </summary>
     public class WebLayoutValidator : BaseWebLayoutValidator
     {
-        private string _version;
+        private readonly string _version;
 
         internal WebLayoutValidator(string version = "1.0.0")
         {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/FeatureSourceDescription.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/FeatureSourceDescription.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/FeatureSourceDescription.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -77,7 +77,7 @@
         /// <summary>
         /// Gets an array of feature schemas in this feature source
         /// </summary>
-        public FeatureSchema[] Schemas { get; private set; }
+        public FeatureSchema[] Schemas { get; }
 
         /// <summary>
         /// Gets a feature schema by its name

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/GdalRasterItem.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/GdalRasterItem.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/GdalRasterItem.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -35,7 +35,7 @@
     /// </summary>
     public class GdalRasterLocationItem : IFdoSerializable
     {
-        private Dictionary<string, GdalRasterItem> _items = new Dictionary<string, GdalRasterItem>();
+        private readonly Dictionary<string, GdalRasterItem> _items = new Dictionary<string, GdalRasterItem>();
 
         /// <summary>
         /// Gets or sets the directory

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/OdbcConfigurationDocument.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/OdbcConfigurationDocument.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/OdbcConfigurationDocument.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -32,7 +32,7 @@
     /// </summary>
     public class OdbcConfigurationDocument : ConfigurationDocument
     {
-        private List<OdbcTableItem> _tables;
+        private readonly List<OdbcTableItem> _tables;
 
         /// <summary>
         /// Initializes a new instance of the <see cref="OdbcConfigurationDocument"/> class.

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/RasterWmsItem.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/RasterWmsItem.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/RasterWmsItem.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -114,7 +114,7 @@
         /// </value>
         public string ImageFormat { get; set; }
 
-        private List<WmsLayerDefinition> _layers = new List<WmsLayerDefinition>();
+        private readonly List<WmsLayerDefinition> _layers = new List<WmsLayerDefinition>();
 
         /// <summary>
         /// Gets the array of WMS layer configuration elements
@@ -288,10 +288,7 @@
             {
                 if (!string.IsNullOrEmpty(bgcolor.InnerText))
                 {
-                    if (bgcolor.InnerText.StartsWith("0x")) //NOXLATE
-                        this.BackgroundColor = ColorTranslator.FromHtml("#" + bgcolor.InnerText.Substring(2)); //NOXLATE
-                    else
-                        this.BackgroundColor = ColorTranslator.FromHtml("#" + bgcolor.InnerText); //NOXLATE
+                    this.BackgroundColor = bgcolor.InnerText.StartsWith("0x") ? ColorTranslator.FromHtml("#" + bgcolor.InnerText.Substring(2)) : ColorTranslator.FromHtml("#" + bgcolor.InnerText);
                 }
                 else
                 {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Serialization/Enums.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Serialization/Enums.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Serialization/Enums.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -116,11 +116,11 @@
     {
         public MgPacketHeader PacketHeader;
 
-        public MgBasicPacket()
+        protected MgBasicPacket()
         {
         }
 
-        public MgBasicPacket(MgPacketHeader header)
+        protected MgBasicPacket(MgPacketHeader header)
         {
             PacketHeader = header;
         }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Serialization/MgBinaryDeserializer.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Serialization/MgBinaryDeserializer.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Serialization/MgBinaryDeserializer.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -31,7 +31,7 @@
     public class MgBinaryDeserializer
     {
         private Stream m_stream;
-        private byte[] m_buf = new byte[Math.Max(MgBinarySerializer.DoubleLen, MgBinarySerializer.UInt64Len)];
+        private readonly byte[] m_buf = new byte[Math.Max(MgBinarySerializer.DoubleLen, MgBinarySerializer.UInt64Len)];
         private Version m_siteVersion;
 
         /// <summary>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Serialization/MgBinarySerializer.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Serialization/MgBinarySerializer.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Serialization/MgBinarySerializer.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -30,7 +30,7 @@
     /// </summary>
     public class MgBinarySerializer
     {
-        private Stream m_stream;
+        private readonly Stream m_stream;
         private Version m_siteVersion;
 
         /// <summary>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Tile/BatchSettings.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Tile/BatchSettings.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Tile/BatchSettings.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -409,7 +409,7 @@
         /// <summary>
         /// A reference to the parent, and thus the connection
         /// </summary>
-        private TilingRunCollection m_parent;
+        private readonly TilingRunCollection m_parent;
 
         /// <summary>
         /// The resource ID of the tile set or map definition

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Tile/RenderThread.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Tile/RenderThread.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Tile/RenderThread.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -56,14 +56,14 @@
         }
 
         public Queue<KeyValuePair<int, int>> TileSet;
-        private Queue<EventPassing> RaiseEvents = new Queue<EventPassing>();
-        private object SyncLock;
-        private AutoResetEvent Event;
+        private readonly Queue<EventPassing> RaiseEvents = new Queue<EventPassing>();
+        private readonly object SyncLock;
+        private readonly AutoResetEvent Event;
         private int CompleteFlag;
-        private TilingRunCollection Parent;
+        private readonly TilingRunCollection Parent;
         private int Scale;
         private string Group;
-        private string MapDefinition;
+        private readonly string MapDefinition;
         private MapTilingConfiguration Invoker;
 
         private bool Randomize;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Utility.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Utility.cs	2015-08-10 12:54:47 UTC (rev 8735)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Utility.cs	2015-08-10 14:57:50 UTC (rev 8736)
@@ -317,7 +317,7 @@
         /// <param name="rewind">True if the source stream should be rewound before being copied</param>
         public static void CopyStream(System.IO.Stream source, System.IO.Stream target, bool rewind)
         {
-            int r;
+            //int r;
             byte[] buf = new byte[1024];
 
             //bool rewound = false;
@@ -1017,20 +1017,12 @@
         /// <param name="srcCsWkt">The source coordinate system WKT.</param>
         /// <param name="dstCsWkt">The destination coordinate system WKT.</param>
         /// <returns></returns>
-        public static OSGeo.MapGuide.ObjectModels.Common.IEnvelope TransformEnvelope(OSGeo.MapGuide.ObjectModels.Common.IEnvelope env, string srcCsWkt, string dstCsWkt)
+        public static ObjectModels.Common.IEnvelope TransformEnvelope(ObjectModels.Common.IEnvelope env, string srcCsWkt, string dstCsWkt)
         {
             try
             {
                 ISimpleTransform trans = null;
-                if (CsHelper.DefaultCatalog != null)
-                {
-                    trans = CsHelper.DefaultCatalog.CreateTransform(srcCsWkt, dstCsWkt);
-                }
-                else
-                {
-                    trans = new DefaultSimpleTransform(srcCsWkt, dstCsWkt);
-                }
-
+                trans = CsHelper.DefaultCatalog != null ? CsHelper.DefaultCatalog.CreateTransform(srcCsWkt, dstCsWkt) : new DefaultSimpleTransform(srcCsWkt, dstCsWkt);
                 var oldExt = env;
 
                 double llx;



More information about the mapguide-commits mailing list