のプロパティのC#(複数)を定義可能なタイプ:私はここに誤解基本的なOOPを経験していると思うクラス
(これらは、場合にあなたが「仮想に驚いている、ところで6クラスEntity Frameworkのです")
public class WeaponUsed : HistoryEvent
{
public virtual Player Target { get; set; }
public virtual GameCountry Country { get; set; }
//Victims: Troops or Pops
public ICollection<Victim> Victims { get; set; }
public bool HasMoreWeaponsLeft { get; set; }
}
犠牲者は、"兵士 "オブジェクトまたは"人口 "オブジェクトになります。犠牲者クラスはどのように見えますか? 2つのプロパティを使用し、未使用のものを「null」に設定することができます。
public class Victim
{
public virtual Troop TroopVictim { get; set; }
public virtual Population PopVictim { get; set; }
}
しかし、これは最善の解決策ではありませんか? 私は被害者がであると判断したいと思います a troop または人口です。
私はまた、セッターを経由して、それをやって考えた:
public ICollection<object> Victims { get;
set
{
if (value.GetType() == typeof(Troop) || value.GetType() == typeof(Population))
Victims.Add(value);
}
}
しかし、私はまだそれが最善の方法だとは思わない、または多分それは... 良く、クリーナー1はありますか?
'enum victim {Troop、Population}'のように 'enum'を試してみることができます。 –
私は知っていますが、私はオブジェクトに格納されている余分な情報が必要です。 "名前"自体は十分ではありません。 – Tornister
どのような追加情報を保存する必要がありますか? –