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
3.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
C#のリフレクションを使ってみよう
C#におけるリフレクションの概略
・概要
・できること
・使用上の注意
kyoma
April 26, 2019
Other Decks in Programming
See All in Programming
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
13
3.5k
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
300
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
130
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
110
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
500
Stage 3 Decorators でできること / できないこと / TSKaigi 2026
susisu
1
1.6k
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
650
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
230
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
1
620
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
1
1.2k
AutonomyとControlのあいだ:Graflowで記述するAIエージェント協調
myui
0
110
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
120
Featured
See All Featured
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
160
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
170
Navigating Team Friction
lara
192
16k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Faster Mobile Websites
deanohume
310
31k
Thoughts on Productivity
jonyablonski
76
5.2k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
520
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Bash Introduction
62gerente
615
210k
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#にはリフレクションって 治安が悪い機能があるよ • メインロジックでは 基本的に使わないのが吉だよ • 工夫すれば、
便利な使い方ができるよ