値型を.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でのプロジェクト

Source: https://habr.com/ru/post/J315352/


All Articles