Как исправить ошибку на c#: Object не содержит определения Direction?
Я тренировался писать шаблон Наблюдатель, выполняя задание: При помощи шаблона наблюдатель реализовать отправку сообщений о нарушителях на посты ДПС. Каждый пост ДПС имеет список нарушителей. Пост также имеет направление на кортом ,он распологается(север, юг, восток. запад.)Если в ифнормации о нарушителе направление совпадает данный пост добавлет нарушителя в свой список. Написал код:
using System;
using System.Collections.Generic;
namespace Lab6
{
// Объект, за наблюдением которого будут следить посты ДПС
class Violator
{
public string Direction { get; set; }
public string Name { get; set; }
}
// Интерфейс для наблюдателей
interface IObserver
{
void Update(Violator violator);
}
// Пост ДПС, который будет получать сообщения о нарушителях
class DpsPost : IObserver
{
public Dictionary<string, List<Violator>> violatorsByDirection =
new Dictionary<string, List<Violator>>()
{
{ "Север", new List<Violator>() },
{ "Юг", new List<Violator>() },
{ "Восток", new List<Violator>() },
{ "Запад", new List<Violator>() }
};
private object violation;
public string Name { get; set; }
// Метод, вызываемый при получении нового нарушителя
public void Update(Violator violator)
{
// Если нарушитель движется в ту же сторону, что и пост ДПС,
// то добавляем его в список нарушителей по направлению
if (violator.Direction == this.Name)
{
violatorsByDirection[violation.Direction].Add(violator);
}
}
}
// Интерфейс для объекта, за наблюдением которого следят наблюдатели
interface ISubject
{
void Attach(IObserver observer);
void Detach(IObserver observer);
void Notify(Violator violator);
}
// Объект, за изменениями которого будут следить наблюдатели
class Road : ISubject
{
private List<IObserver> observers = new List<IObserver>();
public void Attach(IObserver observer)
{
observers.Add(observer);
}
public void Detach(IObserver observer)
{
observers.Remove(observer);
}
// Метод, вызываемый при появлении нового нарушителя на дороге
public void Notify(Violator violator)
{
foreach (var observer in observers)
{
observer.Update(violator);
}
}
}
// Пример использования
class Program
{
static void Main(string[] args)
{
// Создаем посты ДПС
DpsPost northPost = new DpsPost() { Name = "Север" };
DpsPost southPost = new DpsPost() { Name = "Юг" };
DpsPost eastPost = new DpsPost() { Name = "Восток" };
DpsPost westPost = new DpsPost() { Name = "Запад" };
// Создаем объекты, за изменениями которых будут следить посты ДПС
Road road1 = new Road();
Road road2 = new Road();
// Подписываем посты на изменения в объектах
road1.Attach(northPost);
road1.Attach(southPost);
road2.Attach(eastPost);
road2.Attach(westPost);
// Создаем новых нарушителей
Violator violator1 = new Violator() { Name = "John Doe", Direction = "Север" };
Violator violator2 = new Violator() { Name = "Jane Doe", Direction = "Юг" };
// Уведомляем объекты об изменениях
road1.Notify(violator1);
road2.Notify(violator2);
// Выводим списки нарушителей по направлениям для каждого поста ДПС
Console.WriteLine("Нарушители по северному посту:");
foreach (var violator in northPost.violatorsByDirection["North"])
{
Console.WriteLine(violator.Name);
}
Console.WriteLine("Нарушители по южному посту:");
foreach (var violator in southPost.violatorsByDirection["South"])
{
Console.WriteLine(violator.Name);
}
Console.WriteLine("Нарушители по восточному посту:");
foreach (var violator in eastPost.violatorsByDirection["East"])
{
Console.WriteLine(violator.Name);
}
Console.WriteLine("Нарушители по западному посту:");
foreach (var violator in westPost.violatorsByDirection["West"])
{
Console.WriteLine(violator.Name);
}
Console.ReadLine();
}
}
}
При запуске выдаёт ошибку и ругается на строку violatorsByDirection[violation.Direction].Add(violator);
Текст ошибки: "object" не содержит определения "Direction", и не удалось найти доступный метод расширения "Direction", принимающий тип "object" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).
Подскажите пожалуйста, как исправить данную ошибку.