現在、私はVisual Studio 2008とC#を使用して階層化されたアーキテクチャを使用するソフトウェアを開発しています。 そのシステムでは、必要なときにメッセージボックスを使って表示されるすべてのテキストメッセージをXMLファイルに保存して、メッセージを更新するとシステム全体をコンパイルする必要がなくなります。どうすればこれを達成できますか? XMLファイル構造は何ですか? C#コードからメッセージがどのように呼び出されますか?記述して例を挙げてください。おかげさまで XMLファイルからテキストメッセージを呼び出す
0
A
答えて
1
シナリオに適したものは、リソースサテライトDLLです。これは、アプリケーションに動的にロードされる一連のresouresを含む別個のDLLです。これは、多くの異なるアプリケーションがローカリゼーションを行う方法です。最も重要なのは、このタイプの機能をサポートするツールが数多くあることです。
メッセージを変更するには、単にこのDLLを変更する必要があります。これはコンパイルになりますが、リソースではなくシステムでのみ行われます。
0
あなたは、あなたのメッセージを保存するために、あなたのapp.configファイルに独自のカスタムセクションを追加したい場合があります。ただし、メッセージが変更されるたびにapp.configファイルを更新する必要があります。
http://msdn.microsoft.com/en-us/library/system.configuration.configurationsection.aspx
1
私はIDとメッセージ(および任意の他、あなたが必要とする)を格納するために、.NETのDataSetとDataTableのを使用するクラスを作成します。
このように、DataSet.WriteXML()およびDataSet.ReadXML()を使用して、指定したファイル名からセーブ/ロードすることができ、XML形式を自分で手作業で作成する心配はありません。
この
は用意しておくと便利クラスのように聞こえたので、私は「コンセプトの証明」として1を書いた:私は、app.configファイルにメッセージを保存したいいけない'*************************************************************************
' 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. AJAXからPHPファイルを呼び出す
- 2. jsファイルからthickboxを呼び出す
- 3. JavaScriptからJSPファイルを呼び出す
- 4. angularJsからPHPファイルを呼び出す
- 5. XML drawablesを呼び出すXMLボタン
- 6. DatastageからのWCFサービスの呼び出し - XMLファイルへの出力
- 7. exeファイル(A.exe)からbatファイル(B.bat)を呼び出す
- 8. 別のPHPファイルからPHPファイルを呼び出す
- 9. form.csファイルからprogram.csファイルに変数を呼び出す方法
- 10. xcode - "activityIndicator"を持つサーバーからxmlを再呼び出し
- 11. .phpファイルを呼び出す
- 12. XMLで関数を呼び出す
- 13. JQuery XML Webサービスを呼び出す
- 14. iOSアプリケーションからのXML POST呼び出し
- 15. text/xml restからの戻り呼び出し
- 16. Excelファイルを開き、PowerBuilderからマクロを呼び出す
- 17. 関数呼び出しから関数呼び出し名を抽出する
- 18. 別のファイルから関数を呼び出す方法は?
- 19. Java GWTコードから.jsファイルのJavascript関数を呼び出す
- 20. .class.phpファイルからメソッドを呼び出す(スリムフレームワーク)
- 21. .eexファイルから関数を呼び出す方法
- 22. Rubyのウェブサイトからファイルを呼び出す
- 23. C++からlibファイルのc関数を呼び出す
- 24. C#からFortran実行ファイルを呼び出す処理
- 25. dbprojファイル内からVSDBCMDを呼び出す
- 26. C#/ ExcelDNAコードから他のxllファイルを呼び出す
- 27. JavaScript - JavaScriptからCSSファイル/ CSSコードを呼び出す
- 28. 別のCファイルから関数を呼び出す
- 29. PHPファイルからjs関数を呼び出す
- 30. .csファイルからJavaScript/jQuery関数を呼び出す方法C#
。むしろ、メッセージを格納するために別のXMLファイル(たとえば、Messages.xml)を使用したいと思います。 –
次に、XMLシリアル化を使用してXMLファイルのメッセージをMessageオブジェクトの配列に変換することができます。 http://www.dotnetjunkies.com/QuickStartv20/howto/doc/xmlserialization/RWObjFromXML.aspx – Jeremy