C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のリフレクションを使用して文字列値で異なるデータ型を持つプロパティを設定するにはどうすればよいですか?


リフレクションとは、マネージコードが独自のメタデータを読み取ってアセンブリを見つけることができる場合です。基本的に、コードは同じシステム内の他のコードを検査できます。 C#のリフレクションを使用すると、型のインスタンスを動的に作成し、その型を既存のオブジェクトにバインドできます。さらに、既存のオブジェクトとaccessitsプロパティから型を取得できます。コードで属性を使用すると、モジュール、アセンブリ、および型を記述するTypeのオブジェクトが提供されるため、リフレクションによってアクセスが可能になります。

double型のプロパティがあり、実行時に実際に文字列として値があり、型を変更した後にプロパティに割り当てたとします。 Convert.ChangeType()を使用できます -これにより、任意のIConvertibleタイプのランタイム情報を使用して、表現形式を変更できます。

using System;
using System.Reflection;
namespace DemoApplication{
   class Program{
      static void Main(){
         Circle circle = new Circle();
         string value = "6.5";
         PropertyInfo propertyInfo = circle.GetType().GetProperty("Radius");
         propertyInfo.SetValue(circle, Convert.ChangeType(value,
         propertyInfo.PropertyType), null);
         var radius = circle.GetType().GetProperty("Radius").GetValue(circle, null);
         Console.WriteLine($"Radius: {radius}");
         Console.ReadLine();
      }
   }
   class Circle{
      public double Radius { get; set; }
   }
}

出力

Radius: 6.5

上記の例では、文字列値「6.5」がConvert.ChangeTypeを使用して実際のtypedoubleに変換され、reflectioninruntimeを使用してRadiusプロパティに割り当てられていることがわかります。


  1. Tkinter Spinboxでデフォルトの文字列値を設定するにはどうすればよいですか?

    Tkinter Spinboxにデフォルトの文字列値を設定するには、 setを使用する必要があります 方法。例を見て、文字列値のセットを使用してスピンボックスを作成し、デフォルトの文字列を設定する方法を見てみましょう。 ステップ- tkinterライブラリをインポートし、tkinterフレームのインスタンスを作成します。 ジオメトリを使用してフレームのサイズを設定します メソッド。 文字列のセットを作成し、変数 dataに保存します 。 次に、 StringVar()を使用します StringVarを作成するコンストラクター 物体。 Spingboxであるウィジェッ

  2. Redis TYPE –キーに値ストアのデータ型を取得する方法

    このチュートリアルでは、キーの値ストアのデータ型を取得する方法について学習します。 redisデータストアの値は、String、List、Set、Sorted Setなどのさまざまなデータ型にすることができます。値のデータ型を取得するには、COMMAND – TYPEを使用します。 redis-cliで。 redisTYPEコマンドの構文は次のとおりです:- 構文:- redis host:post> TYPE <key name> 出力:- - string representing data type of a value.- none, if key does