トップ回答者
文字列で指定されたデータ型に変換するには

質問
回答
-
そういう目的であれば、1つ1つの値・メンバーを個別に扱うのではなく、Settings(クラス)全体をシリアル化することをお勧めします。
.NET Frameworkにはこれを支援する機能として、
- DataContractSerializer、データ コントラクトの使用
- XmlSerailizer、XMLシリアル化の概要
- BinaryFormatter、基本的なシリアル化
が用意されています。最初の2つは.NETクラス←→XML形式の双方向変換で、もちろんXMLということは文字列として扱えます。3つ目はバイナリ形式なのでbyte[]として扱うことになりますが内容にこだわらなければそれでもかまわないと思います。1つ目はXML形式の他にバイナリ形式、JSON形式を使用することもできます。
- 回答の候補に設定 ひらぽんModerator 2014年2月6日 7:22
- 回答としてマーク 星 睦美 2014年2月12日 2:43
すべての返信
-
自作して変換用のメソッド(MyConverter)を作成して対処してますが、自作せずに.NETに用意されている方法はありますか?
MyConverterはどのような実装になっているのでしょうか? ParseメソッドやConverterクラスを利用されているのでしょうか? であれば、それらを直接利用するだけで十分だと思いますが、どのような目的でMyConverterを作成されたいのでしょうか? つまり、値および型をstringのパラメーターで受け取り、変換結果を返すような汎用的なメソッドの必要性は高くないと思うのですが・・・
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
-
ご回答ありがとうございます。
もう少しやりたいことを具体的に申し上げますね。
ホームページとの連係で利用する目的で、Microsoft SQL Serverのデータベースにアプリケーションの設定値を保存しようとしています。例えば日付形式の単一のデータ(RDBで扱うような複数の行ではなく単にその値だけ)などを保存するために次のようなテーブルを作成しました。
テーブル名:Settings
カラム名:ID(int), KeyName(nvarchar(20)), Value(nvarchar(100))このテーブルにデータを保存するときに、例えば、KeyNameを「DateA」、Valueを「2014/1/1」などと文字列として保存します。
次にその値を取得するときに、KeyName「DateA」に一致するValueを取得しています。KeyName「DateA」というのは、仕様上System.DateTime型の形式が入っているとわかるので、取得したあとにSystem.Convert。ToDateTime()で文字列をDateTime型に変換してしまえば終わりなのですが、
ここで、もし、DateType(nvarchar(100))みたいなカラムを設置して、「System.DateTime」という文字列を保持し、元の質問のように変換できるなら、実装段階で変換型の選択ミスをするなどのリスクを軽減できるかな?と思って質問させていただきました。
確かにご指摘のようにそれを変換したとして、どのように取得した値を受け取るのかは考えていませんでした。当初はジェネリックスで型指定して...と考えてましたが、そこで型指定するなら、本末転倒ですね。
もう少し仕様を考え直したいと思います。
また、上述のようにSQL Serverで単一のデータを保存する手法については新たに別スレッドをたてて再度質問させていただきます。
ご回答くださいました皆様ありがとうございました。
-
そういう目的であれば、1つ1つの値・メンバーを個別に扱うのではなく、Settings(クラス)全体をシリアル化することをお勧めします。
.NET Frameworkにはこれを支援する機能として、
- DataContractSerializer、データ コントラクトの使用
- XmlSerailizer、XMLシリアル化の概要
- BinaryFormatter、基本的なシリアル化
が用意されています。最初の2つは.NETクラス←→XML形式の双方向変換で、もちろんXMLということは文字列として扱えます。3つ目はバイナリ形式なのでbyte[]として扱うことになりますが内容にこだわらなければそれでもかまわないと思います。1つ目はXML形式の他にバイナリ形式、JSON形式を使用することもできます。
- 回答の候補に設定 ひらぽんModerator 2014年2月6日 7:22
- 回答としてマーク 星 睦美 2014年2月12日 2:43
-
フォーラム オペレーターの星 睦美です。
あくあれっど さん、こんにちは。
フォーラムの回答者からの返信が検討の参考になったようですね。
私のほうで佐祐理 さんの返信を[回答の候補に設定] させていただきました。参考になった返信には、投稿者から[回答としてマーク] いただければ幸いです。
※今回の質問から新しいスレッドが作成されましたのでリンクしておきます。・SQL Serverに設定値などの単一のデータを保存するには?
http://social.msdn.microsoft.com/Forums/ja-JP/93760ccd-e30f-48bb-a27b-cf694ed72ff1/sql-server?forum=csharpgeneralja
フォーラム オペレーター 星 睦美 - MSDN Community Support
- 編集済み 星 睦美 2014年2月5日 5:07 編集