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

C#でのリフレクション


リフレクションオブジェクトは、実行時にタイプ情報を取得するために使用されます。実行中のプログラムのメタデータへのアクセスを提供するクラスは、System.Reflection名前空間にあります。

以下はReflectionsのアプリケーションです-

  • 実行時に属性情報を表示できます。

  • アセンブリ内のさまざまなタイプを調べて、これらのタイプをインスタンス化できます。

  • メソッドとプロパティへの遅延バインディングが可能になります

  • 実行時に新しいタイプを作成し、それらのタイプを使用していくつかのタスクを実行できます。

例を見てみましょう-

using System;

[AttributeUsage(AttributeTargets.All)]
public class HelpAttribute : System.Attribute {
   public readonly string Url;

   public string Topic // Topic is a named parameter {
      get {
         return topic;
      }
      set {
         topic = value;
      }
   }
   public HelpAttribute(string url) // url is a positional parameter {
      this.Url = url;
   }
   private string topic;
}

[HelpAttribute("Information on the class MyClass")]
   class MyClass {
}

namespace AttributeAppl {
   class Program {
      static void Main(string[] args) {
         System.Reflection.MemberInfo info = typeof(MyClass);
         object[] attributes = info.GetCustomAttributes(true);

         for (int i = 0; i < attributes.Length; i++) {
            System.Console.WriteLine(attributes[i]);
         }
         Console.ReadKey();
      }
   }
}

  1. C++でのラインリフレクション

    2D平面上にn個の点があるとすると、指定された点を対称的に反射するy軸に平行な線があるかどうかを確認する必要があります。つまり、指定された線上にすべての点を反映した後に線が存在するかどうかを確認する必要があります。元のポイントのセットは、反映されたポイントと同じです。 したがって、入力がpoints =[[1,1]、[-1,1]]のような場合 その場合、出力はtrueになります これを解決するには、次の手順に従います- 1つのセットを定義します。 n:=ポイントのサイズ minVal:=inf maxVal:=-inf 初期化i:=0の場合、i <

  2. C++でのミラーリフレクション

    4つの壁のそれぞれに鏡のある特別な正方形の部屋があるとします。南西の角を除く各角に受容体があります。これらには0、1、2の番号が付けられています。正方形の部屋には長さpの壁があり、南西の角からのレーザー光線が最初に0番目の受容体から距離qで東の壁に当たります。光線が最初に出会う受容体の数を見つける必要があります。 したがって、p =2、q =1の場合、ケースは次のようになります- したがって、光線が最初に反射して左壁に戻るときに、光線が受容体2に出会うため、出力は2になります。 これを解決するには、次の手順に従います- pとqはどちらも偶数ですが、 p:=p / 2 q: