bucket-sort logo bucket-sort

プログラミングとインフラエンジニアリングの覚え書き

  • Posts
  • About
  • Contact
  1. Home
  2. All Posts
  3. [C#] Reflectionとは(機能と役割)

[C#] Reflectionとは(機能と役割)

Mar 23, 2026 C# , .NET bucket-sort

Attributeを理解した次に出てくるのが、Reflectionです。 Attributeは単なるメタ情報ですが、それを「読む仕組み」がなければ意味を持ちません。その役割を担うのがReflectionです。

Reflectionとは何か

Reflectionは一言で言うと、 実行時に型情報やメタ情報を調べる仕組み です。

Attributeとの関係

Attributeはコードに付けられた「情報」です。しかし、それだけでは何も起きません。

[Obsolete]
class MyClass
{
}

この状態では、実行時には何も特別な処理は起きません。

そこで使われるのがReflectionです。

var type = typeof(MyClass);
var attrs = type.GetCustomAttributes(false);

これによって、Attributeを取得し、プログラムの中で扱うことができます。

Reflectionでできること

Reflectionを使うと、次のようなことができます。

型情報の取得

  • クラス名
  • メソッド一覧
  • プロパティ一覧

Attributeの取得

method.IsDefined(typeof(MyAttribute), false)

動的な呼び出し

method.Invoke(obj, null);

コンパイル時ではなく、実行時に判断できる

なぜReflectionが必要なのか

Attributeは情報を付けるだけです。

Reflectionがその情報を読み取ることで初めて意味が生まれる

よくある用途

フレームワーク内部

  • ASP.NET Core(Route)
  • Entity Framework
  • JSONシリアライザ

自作処理

  • 特定Attribute付きメソッドの自動実行
  • 設定値の読み取り
  • 動作の切り替え

「reference」との違い

混同しやすい用語として「reference」がありますが、これは単なる参照です。

object obj = new MyClass();

これはReflectionとは無関係

注意点

パフォーマンス

Reflectionは遅いです。

  • 毎回呼ばない
  • キャッシュする

型安全でない

method.Invoke(...)

コンパイル時チェックが効かない

まとめ

Reflectionは、実行時に型やAttributeなどのメタ情報を調べるための仕組みです。

Attributeが「情報を付ける」役割なら、 Reflectionは「その情報を読む」役割 です。

この2つはセットで初めて意味を持ちます。

C# .NET
← [C#] Attributeとは(機能と役割) [C#] AttributeとReflectionの使いどころ →

Related Posts

  • [C#] delegate と event の仕組みを整理する Apr 1, 2026
  • Pub/Sub パターンとは何か Mar 31, 2026
  • [C#] Interlockedの使い方 Mar 27, 2026
  • [C#] ImmutableHashSet<T>の使い方 Mar 26, 2026

Table of Contents

  • Reflectionとは何か
  • Attributeとの関係
  • Reflectionでできること
    • 型情報の取得
    • Attributeの取得
    • 動的な呼び出し
  • なぜReflectionが必要なのか
  • よくある用途
    • フレームワーク内部
    • 自作処理
  • 「reference」との違い
  • 注意点
    • パフォーマンス
    • 型安全でない
  • まとめ

Recent Posts

  • Laravel の Event / Listener で Pub/Sub を実装する Apr 2, 2026
  • [C#] delegate と event の仕組みを整理する Apr 1, 2026
  • Pub/Sub パターンとは何か Mar 31, 2026
  • PHP/Laravel で値の状態を判定するヘルパ関数まとめ Mar 30, 2026
  • Filament の dehydrated メソッドとは何か Mar 29, 2026

Categories

  • AWS27
  • C#22
  • .NET20
  • Laravel16
  • Linux12
  • Apache8
  • MySQL8
  • PHP8
  • DynamoDB6
  • Nginx5
  • WordPress4
  • インフラ4
  • Hugo3
  • セキュリティ3
  • .NET Framework1
  • Aurora1
  • Filament1
  • Git1
  • SQS1

Tags

  • AWS
  • C#
  • .NET
  • Laravel
  • PHP
  • MySQL
  • セキュリティ
  • Linux
  • Apache
  • Code Snippet
  • DynamoDB
  • NoSQL
  • PHP-FPM
  • RDS
  • DoS
  • Nginx
  • Windows
  • WordPress
  • パフォーマンス
  • 監視
  • Amazon Linux 2023
  • CMS
  • Docker
  • Ipset
  • Iptables
  • OPCache
  • Webサーバー
  • 認可
  • Aurora
  • Blade
Powered by Hugo & Explore Theme.