Actuellement, je développe un logiciel qui utilise une architecture en couches utilisant Visual Studio 2008 et C#. Dans ce système, je veux garder tous les messages texte (qui seront affichés en utilisant des boîtes de message si nécessaire) dans un fichier XML de sorte que si je mets à jour un message, je n'ai pas à compiler tout le système. Comment puis-je accomplir cela? Quelle sera la structure du fichier XML? Comment les messages seront appelés à partir du code C#? Veuillez être descriptif et donner un exemple. Merci.Appel de SMS à partir du fichier XML
Répondre
Un meilleur choix pour votre scénario peut être une DLL Satellite de ressources. C'est une DLL séparée qui contient un ensemble de ressources chargées dynamiquement dans votre application. C'est ainsi que de nombreuses applications font la localisation. Et le plus important, il existe de nombreux outils qui prennent en charge ce type de fonctionnalité.
La modification des messages implique simplement de modifier cette DLL. Cela entraîne une compilation, mais seulement des ressources et non du système.
Vous pouvez ajouter votre propre section personnalisée à votre fichier app.config pour stocker vos messages. Cependant, cela nécessiterait que vous mettiez à jour le fichier app.config chaque fois qu'un message change.
http://msdn.microsoft.com/en-us/library/system.configuration.configurationsection.aspx
Je voudrais créer une classe qui a utilisé un DataSet .NET et DataTable pour stocker les ids et les messages (et tout ce dont vous avez besoin). De cette façon, la classe peut utiliser DataSet.WriteXML() et DataSet.ReadXML() pour enregistrer/charger à partir de n'importe quel nom de fichier que vous spécifiez et vous n'avez pas à vous soucier de «créer manuellement» le format XML vous-même.
Cela ressemblait à une classe pratique d'avoir, donc j'écrit un comme une « preuve de concept »:
'*************************************************************************
' Class: MsgFile
' Author: Ron Savage
' Date: 05/14/2009
'
' This class is an example for using an XML file to hold messages to be
' displayed by an application.
'
' Modification History
' Date Init Comment
' 05/14/2009 RS Created.
'*************************************************************************
Imports Microsoft.VisualBasic
Imports System.IO
Public Class MsgFile
'*************************************************************************
' Class Variables
'*************************************************************************
Private MsgFile As String
Private msgData As DataSet
Private msgTable As DataTable
'*************************************************************************
' Sub: New()
' Author: Ron Savage
' Date: 05/14/2009
'
' Creates a new MsgFile from an existing file, or creates an empty one
' with the specified file name.
'*************************************************************************
Sub New(ByVal msg_File As String)
Dim srcFile As New FileInfo(msg_File)
If (srcFile.Exists()) Then
msgData = New DataSet()
Load(msg_File)
Else
NewFile(msg_File)
End If
End Sub
'*************************************************************************
' Sub: NewFile()
' Author: Ron Savage
' Date: 05/14/2009
'
' Creates a new XML message file.
'*************************************************************************
Sub NewFile(ByVal msg_File As String)
Me.MsgFile = msg_File
If (IsNothing(msgData)) Then
msgData = New DataSet("MyAppMessages")
msgTable = New DataTable("Messages")
msgTable.Columns.Add(New DataColumn("Id", GetType(System.Int32), Nothing, MappingType.Attribute))
msgTable.Columns.Add(New DataColumn("Text", GetType(System.String), Nothing, MappingType.Attribute))
msgData.Tables.Add(msgTable)
setMessage(0, "New file created")
End If
Save()
End Sub
'*************************************************************************
' Sub: Load()
' Author: Ron Savage
' Date: 05/14/2009
'
' Loads an existing XML message file into the dataset.
'*************************************************************************
Public Sub Load(ByVal msgFileName As String)
Dim srcFile As FileInfo = Nothing
Me.MsgFile = msgFileName
srcFile = New FileInfo(msgFileName)
msgData.Clear()
If (srcFile.Exists()) Then
msgData.ReadXml(msgFileName)
msgTable = msgData.Tables("Messages")
End If
End Sub
'*************************************************************************
' Sub: Save()
' Author: Ron Savage
' Date: 10/05/2008
'
' This routine saves the DataSet to an XML file.
'*************************************************************************
Public Overridable Sub Save()
If (Not IsNothing(msgData) And Not MsgFile.Equals("")) Then
Dim fileWriter As StreamWriter = New StreamWriter(MsgFile)
msgData.WriteXml(fileWriter)
fileWriter.Close()
End If
End Sub
'*************************************************************************
' Sub: getMessage()
' Author: Ron Savage
' Date: 05/14/2009
'
' This gets the text of the message.
'*************************************************************************
Public Function getMessage(ByVal msgId As String) As String
Dim rowsFound() As System.Data.DataRow
Dim msgText As String = ""
If (Not IsNothing(msgTable)) Then
rowsFound = msgTable.Select("Id = " + msgId.ToString)
If (rowsFound.Length > 0) Then
msgText = rowsFound(0).Item("Text").ToString
End If
End If
Return (msgText)
End Function
'*************************************************************************
' Sub: setMessage()
' Author: Ron Savage
' Date: 05/14/2009
'
' This sets the text of the message.
'*************************************************************************
Public Sub setMessage(ByVal msgId As Integer, ByVal msgText As String)
Dim rowsFound() As System.Data.DataRow
Dim msgRow As System.Data.DataRow
If (Not IsNothing(msgTable)) Then
rowsFound = msgTable.Select("Id = " + msgId.ToString)
If (rowsFound.Length > 0) Then
msgRow = rowsFound(0)
msgRow.Item("Id") = msgId
msgRow.Item("Text") = msgText
Else
msgRow = msgTable.NewRow()
msgRow.Item("Id") = msgId
msgRow.Item("Text") = msgText
msgTable.Rows.Add(msgRow)
End If
End If
Save()
End Sub
End Class
- 1. Appel du fichier de commandes Windows à partir de Linux
- 2. Chargement dynamique du contenu NSPopUpButton à partir du fichier XML
- 3. Remplir datagrid ou listview à partir du fichier XML
- 4. comment lire les données à partir du fichier xml
- 5. Lire RSAPublicKey en Java à partir du fichier XML
- 6. Appel à l'aide du modem GSM
- 7. Appel de thickbox à partir d'un fichier js
- 8. Appel du service WCF à partir d'un javascript distant
- 9. Appel de ASMX à partir de jQuery
- 10. Appel du service Web .Net à partir de l'objectif C
- 11. Appel du service Web ASP.net à partir de l'application C#
- 12. Appel d'une macro Excel à partir du script de construction
- 13. Appel de GetWebResourceUrl à partir de .ashx
- 14. Mettre à jour RSS à partir d'un autre fichier XML?
- 15. Appel d'un fichier à partir d'un site Web dans Ruby
- 16. Créer un fichier XML à partir de xsd avec xlinq
- 17. Obtention de l'inputtream à partir d'une ressource classpath (fichier XML)
- 18. Obtention d'un fichier XML à partir d'un jeu de données
- 19. Lecture de valeurs à partir d'un fichier XML avec Linq
- 20. Appel de VBScript à partir de Javascript
- 21. Appel de l'application à partir de rails
- 22. Appel de C# à partir de IronRuby
- 23. Envoi de SMS à partir d'un site Web ASP.NET
- 24. données d'entrée de traitement à partir d'un téléphone si SMS
- 25. envoyer des SMS gratuits à partir de C# + ASP.NET
- 26. SMS de lancement à partir d'un navigateur mobile
- 27. Appel animation XAML à partir du code VB dans WPF
- 28. Limiter les utilisateurs de l'ouverture du fichier XML à partir d'un dossier de projet, dot.net
- 29. Détermination du nom de fichier (ouvert) à partir d'un fichier *
- 30. Appel API COM exe à partir du script NSIS
Je ne veux pas stocker les messages sur fichier app.config. Au contraire, je veux utiliser un autre fichier XML (par exemple, Messages.xml) pour stocker les messages. –
Ensuite, vous pouvez utiliser la sérialisation XML pour convertir votre fichier XML de messages en un tableau d'objets Message. http://www.dotnetjunkies.com/QuickStartv20/howto/doc/xmlserialization/RWObjFromXML.aspx – Jeremy