Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
ZOZOにおけるAI活用の現在 ~モバイルアプリ開発でのAI活用状況と事例~
zozotech
PRO
9
5.7k
エディターってAIで操作できるんだぜ
kis9a
0
730
AIコーディングエージェント(Gemini)
kondai24
0
230
WebRTC と Rust と8K 60fps
tnoho
2
2k
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
130
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
140
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.3k
JETLS.jl ─ A New Language Server for Julia
abap34
1
410
Developing static sites with Ruby
okuramasafumi
0
300
関数実行の裏側では何が起きているのか?
minop1205
1
700
Integrating WordPress and Symfony
alexandresalome
0
160
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
8
2.4k
Featured
See All Featured
A Tale of Four Properties
chriscoyier
162
23k
Music & Morning Musume
bryan
46
7k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
What's in a price? How to price your products and services
michaelherold
246
13k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Scaling GitHub
holman
464
140k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
710
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
730
Practical Orchestrator
shlominoach
190
11k
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#にはリフレクションって 治安が悪い機能があるよ • メインロジックでは 基本的に使わないのが吉だよ • 工夫すれば、
便利な使い方ができるよ