値型を.NETに変換する

問題の紹介



値型の変換(値変換)のような単純なトピックは、記事全体としては価値がないように思われます。 C#には適切な演算子「(T)値」があり、それを実装する型があり、このトピックは閉じていると見なすことができます。 しかし、.NETの14年間で、BCL開発者や他のプログラマーは、値の型を変換するための4つの方法を思い付きました。











それらのリストは次のとおりです。



  1. System.Convertクラス
  2. IConvertibleインターフェイス
  3. System.ComponentModel.TypeConverter ;
  4. To、From、Parse、Createメソッド。


これに加えて、メタタイプNullable [T] System.Enumがあり 、値タイプを変換する独自のメソッドがあります。



開発者がこの変換の可能性をどのように認識したかを考えずに、このようなさまざまなメソッドすべてにA→Bを変換する便利なAPIが1つもありませんでした。



解決策



System名前空間のTypeConvertクラス(はい、他の人の名前空間の目詰まりが悪いことを知っています)。



ToType Convert<FromType, ToType>(FromType value, string format, IFormatProvider formatProvider)
      
      





オプションでformatおよびformatProviderの書式設定を使用して、値の型をFromTypeからToTypeに変換します。 フォーマット設定を受け入れる適切なメソッドがない場合、フォーマットなしのオプションが呼び出されます。



READMEファイルには、他の方法の説明が含まれています。



設置



これらはすべて1つのファイルにあります。このファイルは 、プロジェクトと便利なNugetパッケージに保存できます。



 Install-Package TypeConvert
      
      





Nugetパッケージのロードには2つのクラスがあります。



TypeActivator-キャッシュされたコンストラクターを介して型インスタンスを作成し、

HexConvert-バイト/数字を16進表現に変換し、その逆を行います。



申込み



不明なタイプのパラメーターを既知のメソッドパラメーターにバインドするためのConsoleApp.CommandLineプロジェクト。



プライベートプロジェクトで、JSONから派生した構成値を特定の複合型(Uri、IpAddress、TimeSpanなど)に変換します。



参照資料



» githubでのプロジェクト



All Articles