C#のリフレクションを使ってみよう
by
kyoma
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
C#のリフレクションを使っ てみよう きょーま
Slide 2
Slide 2 text
name : きょーま job : クライアントエンジニア ・新機能開発 ・デバッグ機能 ・Unity / C# / C++ hobby : ゲーム、お絵かき、酒 自己紹介 profile
Slide 3
Slide 3 text
みなさん
Slide 4
Slide 4 text
C# 使ってますか?
Slide 5
Slide 5 text
リフレクション 使ってますか?
Slide 6
Slide 6 text
#リフレクションとは ● C#の機能の一つ ● 実行時型情報と呼ばれるもの ● プログラム実行時に メタデータを取り出す機能 ● “C# リフレクション” で検索検索ゥ what is reflection ?
Slide 7
Slide 7 text
要するに
Slide 8
Slide 8 text
文字列から指定クラスの インスタンスを作ったり
Slide 9
Slide 9 text
privateなメンバを参照したり
Slide 10
Slide 10 text
privateなメソッドを 外から実行できる
Slide 11
Slide 11 text
非常に治安の悪い機能!!
Slide 12
Slide 12 text
チュートリアル tutorial 1. インスタンスを作る 2. privateなフィールドを取得 3. privateなメソッドを呼ぶ
Slide 13
Slide 13 text
基本的な使い方 how to use 1. SystemとSystem.Reflection をusing 2. Typeを取得 3. Typeから FieldInfo、MethodInfoを取得
Slide 14
Slide 14 text
例えば こんなクラスがあったとする
Slide 15
Slide 15 text
← インスタンスを作る ← privateなフィールドを取得 ← privateなメソッドを呼ぶ
Slide 16
Slide 16 text
検索方法の制御 BindingFlags BindingFlags ● フィールドやメソッドを 取得するときの条件 ● NonPublicでprivateを対象に ● 他にもstaticをとったり 大文字小文字を無視したり ● 詳しくはWebで!!
Slide 17
Slide 17 text
これでpublicとかprivateとか 気にせずコードを書けるぜ あいつのコード、 privateばっかでうぜーんだよな
Slide 18
Slide 18 text
ダメです
Slide 19
Slide 19 text
リフレクションを使用す るべきではない理由 why not use reflection ● カプセル化を破壊する ● パフォーマンスが悪い
Slide 20
Slide 20 text
基本的にロジックや設計に リフレクションを使うべきでない
Slide 21
Slide 21 text
リフレクションの活 用場所 effective use of reflection ● デバッグ機能 ● ホットリロードなツール
Slide 22
Slide 22 text
デバッグ機能 for debugging ● デバッグのために ロジックが歪にならない ● メインロジックの 単体テストが容易にできる
Slide 23
Slide 23 text
ホットリロード なツール for hot reload ● ゲームを動かしながらできる データ反映やデバッグ機能 ● 試行錯誤が容易
Slide 24
Slide 24 text
ホットリロードな デバッグツールの例 example hot reload debugging tool ● フィールドのある地点に 障害物や敵キャラを配置する ● 戦闘中にあるキャラクターの パラメータを変更する
Slide 25
Slide 25 text
ゲームロジック のクラス群 デバッグ機能 or データツール ロジックとデバッグ用のコードを切り離せる ゲームロジック内にテストコードを 書かなくて良いという意味ではない リフレクションで参照 高い凝集度・疎結合 1つのプロジェクト
Slide 26
Slide 26 text
まとめ summary ● C#にはリフレクションって 治安が悪い機能があるよ ● メインロジックでは 基本的に使わないのが吉だよ ● 工夫すれば、 便利な使い方ができるよ