これを解決するのにいくつか問題がありましたが、正しい場所を見落としてしまった可能性がありますが、問題があります。個々のプロパティのコレクションと、そのクラスのすべてのプロパティの簡単な列挙もサポートしています。例えばC#エニュメレーションをサポートするクラスを設計する
:
public class CharacterStats
{
public List<BaseStat> StatList { get; set; }
private BaseStat Level { get; set; }
private BaseStat Health { get; set; }
private BaseStat Damage { get; set; }
private BaseStat Defense { get; set; }
}
private void InitializeList()
{
StatList = new List<BaseStat>
{
Level,
Health,
Damage,
Defense,
};
}
は最終的に、これらのプロパティのそれぞれが独自の権利で重要ですが、そこに私は、これらの特性のすべてをループにしたい特定のケースがあり、それらのそれぞれにチェックを行います。
私はreflection
に精通していますが、そのようにプロパティを反復処理するのは控えめで不要です。私は現在、このプロパティをList<BaseStat>
にロールしてそのように設定していますが、これは "正しい"実装であるとはまだ確信していません。
いくつか注意すべき点:
- 使用状況に応じて、私は(名前で)単一のプロパティへの参照を更新することがあり、OR更新(おそらく列挙を介して)全体のコレクション。
- コレクション全体を更新すると、これらのプロパティの一部またはすべての修飾子を含む
CharacterStats
(または同様のもの)タイプの別のオブジェクトが存在する可能性が高くなります。
理想的には、私は必要に応じて、私は簡単に、単一または複数の値を更新することができ、コレクションとして、このクラスを表現するためのソリューションを探しています。
List<T>
またはreflection
を使用していますか、または私が考慮していないより良い方法がありますか?私は過去数日間のインタワークスを掘り起こして解決策を見つけようとしましたが、私は(私が信じる)情報は無関係であるか、単に自分自身をさらに混乱させてしまったと知っています。
客観、私がきたように、私はそれに取り組むことができるように、私はこのクラスを設計する方法、(私はreflection
については、この引数を聞いた)、および使用と可読性の特に容易アカウント潜在的なパフォーマンスの問題を考慮して記載されている?
説明のためにさらに詳しい情報が必要な場合は、ご意見ください。
コードを例に挙げれば、 'List'がないのはなぜですか?私はそれがとても良い解決策だとは思わないが。 –
クラスIEnumerableのクラスにプロパティを持たせることができ、すべてのプロパティを返すだけですか? –
juunas
@DarrenYoungそのコードを残してお詫びしますが、これは私が現在やっていることです。これは機能していますが、私はこのデータを表現するより良い方法があるかどうかを判断しようとしています。私は例にList <>コードを追加しました。 – levelonehuman