Типично представить внутренние структуры данных как свойства вашему бизнес-классу. Но когда нам нужно представить структуры, похожие на массивы (например, правила List ), мы можем столкнуться с проблемой неправильного использования (как в варианте 1).
Предлагается выставить клон таких структур данных как свойства, чтобы не нарушать внутреннюю структуру.
Есть ли у кого-нибудь хорошо продуманное решение для этого?
public class Rule
{
}
public class RulesManager
{
List<Rule> rules = new List<Rule>();
public List<Rule> Rules
{
get { return rules; }
set { rules = value; }
}
public void Add(Rule r)
{
rules.Add(r);
// Do something else after add;
}
public void Delete(Rule r)
{
rules.Remove(r);
// Do something else after delete;
}
}
public class CallingCode
{
public static void Main()
{
RulesManager r = new RulesManager();
// Option 1
r.Rules.Add(new Rule());
// Option 2
r.Add(new Rule());
}
}