У меня есть статический класс (DataFormSubject), который содержит общий объект List следующим образом:
private static List<DataForm> dataForms = new List<DataForm>();
Другие классы, которые полагаются на этот список, должны быть указаны при обновлении списка, поэтому я создал пользовательское событие и связанные с ним методы, которые могут запускаться при добавлении или удалении элемента, следующим образом:
public delegate void DataFormsUpdatedHandler(object sender);
public static event DataFormsUpdatedHandler DataFormsUpdatedEvent;
public static void AddDataForm(DataForm df)
{
dataForms.Add(df);
if (DataFormsUpdatedEvent != null)
DataFormsUpdatedEvent(df);
}
public static void RemoveDataForm(DataForm df)
{
dataForms.Remove(df);
if (DataFormsUpdatedEvent != null)
DataFormsUpdatedEvent(df);
}
Список доступен из статического класса через свойство следующим образом:
public static List<DataForm> DataForms
{
get { return dataForms; }
//set { dataForms = value; }
}
Но проблема здесь в том, что клиент теперь может обойти событие обновления, получив доступ к свойству и выполнив прямое добавление или удаление класса! Э.Г.
DataFormSubject.DataForms.Add(new DataForm);
Как я могу предотвратить это, или есть лучший способ добиться того, чего я хочу? В идеале мне бы хотелось, чтобы событие класса «Класс», на которое могут подписаться наблюдатели, обновилось!