Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
C#のリフレクションを使ってみよう
Search
kyoma
April 26, 2019
Programming
0
3.2k
C#のリフレクションを使ってみよう
C#におけるリフレクションの概略
・概要
・できること
・使用上の注意
kyoma
April 26, 2019
Tweet
Share
Other Decks in Programming
See All in Programming
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
130
GoLab2025 Recap
kuro_kurorrr
0
820
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
240
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
3.6k
CSC307 Lecture 01
javiergs
PRO
0
650
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
340
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
0
220
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
210
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
180
クラウドに依存しないS3を使った開発術
simesaba80
0
210
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
920
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
450
Featured
See All Featured
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
400
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
210
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
61
48k
The Cult of Friendly URLs
andyhume
79
6.7k
Crafting Experiences
bethany
0
25
Speed Design
sergeychernyshev
33
1.5k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
180
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
110
It's Worth the Effort
3n
187
29k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.1k
Transcript
C#のリフレクションを使っ てみよう きょーま
name : きょーま job : クライアントエンジニア ・新機能開発 ・デバッグ機能 ・Unity /
C# / C++ hobby : ゲーム、お絵かき、酒 自己紹介 profile
みなさん
C# 使ってますか?
リフレクション 使ってますか?
#リフレクションとは • C#の機能の一つ • 実行時型情報と呼ばれるもの • プログラム実行時に メタデータを取り出す機能 • “C#
リフレクション” で検索検索ゥ what is reflection ?
要するに
文字列から指定クラスの インスタンスを作ったり
privateなメンバを参照したり
privateなメソッドを 外から実行できる
非常に治安の悪い機能!!
チュートリアル tutorial 1. インスタンスを作る 2. privateなフィールドを取得 3. privateなメソッドを呼ぶ
基本的な使い方 how to use 1. SystemとSystem.Reflection をusing 2. Typeを取得 3.
Typeから FieldInfo、MethodInfoを取得
例えば こんなクラスがあったとする
← インスタンスを作る ← privateなフィールドを取得 ← privateなメソッドを呼ぶ
検索方法の制御 BindingFlags BindingFlags • フィールドやメソッドを 取得するときの条件 • NonPublicでprivateを対象に • 他にもstaticをとったり
大文字小文字を無視したり • 詳しくはWebで!!
これでpublicとかprivateとか 気にせずコードを書けるぜ あいつのコード、 privateばっかでうぜーんだよな
ダメです
リフレクションを使用す るべきではない理由 why not use reflection • カプセル化を破壊する • パフォーマンスが悪い
基本的にロジックや設計に リフレクションを使うべきでない
リフレクションの活 用場所 effective use of reflection • デバッグ機能 • ホットリロードなツール
デバッグ機能 for debugging • デバッグのために ロジックが歪にならない • メインロジックの 単体テストが容易にできる
ホットリロード なツール for hot reload • ゲームを動かしながらできる データ反映やデバッグ機能 • 試行錯誤が容易
ホットリロードな デバッグツールの例 example hot reload debugging tool • フィールドのある地点に 障害物や敵キャラを配置する
• 戦闘中にあるキャラクターの パラメータを変更する
ゲームロジック のクラス群 デバッグ機能 or データツール ロジックとデバッグ用のコードを切り離せる ゲームロジック内にテストコードを 書かなくて良いという意味ではない リフレクションで参照 高い凝集度・疎結合
1つのプロジェクト
まとめ summary • C#にはリフレクションって 治安が悪い機能があるよ • メインロジックでは 基本的に使わないのが吉だよ • 工夫すれば、
便利な使い方ができるよ