これらのプロパティを持つ Clone オブジェクトがあるとします。クローンは、ロード元のファイルに基づいて異なる質量または名前を持つ場合がありますが、これらの値は実行時に変更されることはありません。ただし、インスタンスのクローンには、インスタンスごとに変化する自律性とプロパティがあるため、すべてが同じインスタンスになることはできません。
public class Clone
{
public float Mass { get; protected set; }
public string Name { get; protected set; }
public Clone(string filePath)
{
Name = //read name from file
Mass = //read mass from file
}
}
今、私が知りたいのは、代わりにこれを行うことの利点と欠点(もしあれば)は何ですか:
public class CloneInfo
{
public float Mass;
}
public static class Database
{
public static Dictionary<string, CloneInfo> Lookup;
[...load whole dictionary from files...]
}
public class Clone
{
public string Name { get; protected set; }
public float Mass { get { return Database.Lookup[Name].Mass; } }
public Clone(string name)
{
Name = name;
}
}
この「リダイレクト」方法では、Clone.Mass の単純な構文を維持しますが、インスタンスごとに Mass 値を保存する必要はありません。何千ものクローンがうろついているので、これは良いことです。構文のために、主に「リダイレクト」に興味があります。特定のクローンの質量が必要になるたびに、単純に手動でデータベース ルックアップを実行できることに気付きましたが、クラスの使用法は適切で単純なものにしておきたいと思います。これに欠点はありますか?プロパティは、静的データベースでの直接検索よりも遅くなりますか? プロパティは Clone インスタンスでスペースを占有しますか?
それとも、おそらく、これは C# が既に私が気付いていない答えを持っているユース ケースですか? 多くのインスタンスに共通する一度だけのプロパティは、この美しい言語のどこかにあるようです。