- C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
41 :デフォルトの名無しさん[sage]:2015/01/01(木) 11:25:47.35 ID:iDo75q0v - 何がしたいのか全く分からん
| - C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
51 :デフォルトの名無しさん[sage]:2015/01/01(木) 13:47:07.08 ID:iDo75q0v - 状態を増やしていくっていうのはもうスクリプティングの段階に入ってるから
そこでクラスを一つ一つ継承するっていうのは記述に対して実入りが少なすぎる
| - C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
52 :デフォルトの名無しさん[sage]:2015/01/01(木) 14:24:36.87 ID:iDo75q0v - D(S.Initial, T('a',S.a), T('b',S.b));
D(S.a, T('b',S.ab), T('c', S.ac)); ... まあこんな感じで書ける程度の記述合理性は欲しいよね DはDefine SはState(enum) TはTriggerの略で StateがそれぞれDefineされてるかどうかの整合性チェックも一応リフレクション使って実装しときたいな
| - C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
53 :デフォルトの名無しさん[sage]:2015/01/01(木) 14:34:57.74 ID:iDo75q0v - Stateのenumはデフォルトのただの連番っていう約束を決めておけば
ライブラリ側はenumの具体的な値であるintに対して処理すれば 全てのenumに対して使えるからそれでいいんじゃないかと思った
| - C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
55 :デフォルトの名無しさん[sage]:2015/01/01(木) 19:37:46.81 ID:iDo75q0v - せっかくC#使ってインテリセンスのサジェストを受けられるのに
文字列とか無いわw
| - C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
59 :デフォルトの名無しさん[sage]:2015/01/01(木) 20:19:41.93 ID:iDo75q0v - >>57
俺はenumの代わりにダブルクオートでくくって文字列直打ちするっていう話だと思ったけど D("Initial", T('a',"a"), T('b',"b")); これがTypeConverterを使うとどうにかなってインテリセンスが効くようになるの? >>58 public const string Initial = "Initial"; こんなふうにやってくって話? これを書くのがまず面倒だし 定義箇所が複数に分かれたら同じ文字列が出てきちゃう場合が考えられるから拡張性も高いとは思えないな 俺だったら複数に分けるほど大きくなる場合は namespace N1{ enum S{ A, B, C } class Script : ScriptBase{ void D(S s, params T[] triggers){ StateMacine.Instance.Set(typeof(S), s, triggers); } public static void Initialize(){ D(S.A, T('b', S.B), T('c', S.C), T('d', N2.S.D)); } } こんな感じでenumの型情報と一緒に登録して型ごとに分かれるようにして ある型のenumが初回出現した時に対応するScriptクラスをnewして登録するようにすることで 初期化の負荷も分散できるようにするかな
| - C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
60 :デフォルトの名無しさん[sage]:2015/01/01(木) 20:23:00.17 ID:iDo75q0v - なんか間違いまくってるな
namespace N1{ enum S{ A, B, C } class Script : ScriptBase{ static void D(S s, params T[] triggers){ StateMacine.Instance.Set(typeof(S), s, triggers); } public static void Initialize(){ D(S.A, T('b', S.B), T('c', S.C), T('d', N2.S.D)); } }} ある型のenumがTriggerで初回出現した時に 対応するScriptクラスのInitializeメソッドをリフレクションで呼び出して登録するようにすることで 初期化の負荷も分散できるようにする だわ
| - C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
62 :デフォルトの名無しさん[sage]:2015/01/01(木) 21:05:29.97 ID:iDo75q0v - そんなこと言ったって一つが膨大になる場合は幾つかに分けないとしょうがないだろう
そうでなければ一つにまとめりゃいいし 一つで済むならenum連番を拒む理由もないはず enum連番なら配列に入れられるからパフォーマンスも良いし
|
|