Endgültige Änderungen für Schritt „Upgrade Config\Config.vbproj“ speichern

This commit is contained in:
Developer01
2025-12-29 13:53:12 +01:00
parent 2a99128352
commit 6940b01038

View File

@@ -2,13 +2,19 @@
Imports System.Reflection
Imports System.Xml.Serialization
Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Base
Imports ConnectionStringAttribute = DigitalData.Modules.Config.ConfigAttributes.ConnectionStringAttribute
Imports ConnectionStringAppServerAttribute = DigitalData.Modules.Config.ConfigAttributes.ConnectionStringAppServerAttribute
Imports ConnectionStringTestAttribute = DigitalData.Modules.Config.ConfigAttributes.ConnectionStringTestAttribute
Imports EDMIAppServerAttribute = DigitalData.Modules.Config.ConfigAttributes.EDMIAppServerAttribute
Imports GlobalSettingAttribute = DigitalData.Modules.Config.ConfigAttributes.GlobalSettingAttribute
Public Class ConfigManager(Of T)
Public Const USER_CONFIG_NAME As String = "UserConfig.xml"
Public Const COMPUTER_CONFIG_NAME As String = "ComputerConfig.xml"
Public Const APP_CONFIG_NAME As String = "AppConfig.xml"
' Private ReadOnly _LogConfig As LogConfig
Private ReadOnly _LogConfig As LogConfig
Private ReadOnly _Logger As Logger
Private ReadOnly _File As FilesystemEx
@@ -24,6 +30,7 @@ Public Class ConfigManager(Of T)
Private ReadOnly _Blueprint As T
Private ReadOnly _BlueprintType As Type
Private ReadOnly _Serializer As XmlSerializer
Private _Config As T
Private ReadOnly _ExcludedAttributes = New List(Of Type) From {
GetType(ConnectionStringAttribute),
@@ -59,6 +66,10 @@ Public Class ConfigManager(Of T)
''' </summary>
''' <returns></returns>
Public ReadOnly Property Config As T
Get
Return _Config
End Get
End Property
''' <summary>
''' Path to the current user config.
@@ -100,6 +111,38 @@ Public Class ConfigManager(Of T)
''' <param name="ApplicationStartupPath">The path to check for a third config file. This is useful when running the Application in an environment where AppData/ProgramData directories are not available</param>
''' <param name="ForceUserConfig">Override values from ComputerConfig with UserConfig</param>
Public Sub New(LogConfig As LogConfig, UserConfigPath As String, ComputerConfigPath As String, Optional ApplicationStartupPath As String = "", Optional ForceUserConfig As Boolean = False)
If LogConfig Is Nothing Then Throw New ArgumentNullException(NameOf(LogConfig))
If String.IsNullOrWhiteSpace(UserConfigPath) Then Throw New ArgumentException("UserConfigPath must be provided", NameOf(UserConfigPath))
_LogConfig = LogConfig
_Logger = LogConfig.GetLogger()
_File = New FilesystemEx(_LogConfig)
_Blueprint = Activator.CreateInstance(Of T)()
_BlueprintType = _Blueprint.GetType()
_Serializer = New XmlSerializer(_BlueprintType)
_UserDirectory = _File.CreateDirectory(UserConfigPath)
_UserConfigPath = Path.Combine(_UserDirectory, USER_CONFIG_NAME)
If Not String.IsNullOrWhiteSpace(ComputerConfigPath) Then
If IO.File.Exists(ComputerConfigPath) Then
_ComputerDirectory = _File.CreateDirectory(ComputerConfigPath, False)
Else
_ComputerDirectory = ComputerConfigPath
End If
_ComputerConfigPath = Path.Combine(_ComputerDirectory, COMPUTER_CONFIG_NAME)
End If
_AppConfigDirectory = ApplicationStartupPath
If Not String.IsNullOrWhiteSpace(ApplicationStartupPath) Then
_AppConfigPath = Path.Combine(ApplicationStartupPath, APP_CONFIG_NAME)
End If
_WriteAllValuesToUserConfig = ForceUserConfig
_Config = LoadConfig()
End Sub
''' <summary>
''' Creates a new ConfigManager with a single (user)config path