#c# #object
#c# #объект
Вопрос:
мне нужно что-то запомнить (точно это изменение состояния маршрута), мой подход таков: сначала создайте список (назовите его LOR) базы объектов на основе состояния чего-либо, после этого каждые 10 минут повторно запрашивайте состояние этих маршрутов и сбрасывайте свойство LOR , при изменении любого маршрута в свойстве LOR этот маршрут вызовет событие .
вот код :
сначала я создаю список маршрутов объектов
List<Route> listOfRouteObj = new List<Route>();
определение моего объекта :
class Route
{
public class EventArgsPriority : EventArgs
{
public int oldPriority { get; set; }
public int newPriority { get; set; }
}
public delegate void PriorityChangedEventHandler(EventArgsPriority e);
public event PriorityChangedEventHandler onPriorityChanged;
#region properties
private int miPriority = 3000;
public int Priority
{
get
{
return miPriority;
}
internal set
{
if (miPriority != value)
{
PriorityChangedEventHandler handler = onPriorityChanged;
EventArgsPriority aps = new EventArgsPriority();
aps.oldPriority = miPriority;
aps.newPriority = value;
handler(aps);
}
miPriority = value;
}
}
//
private string mstrRouteID = "";
public string RouteID
{
get
{
return mstrRouteID;
}
internal set
{
mstrRouteID = value;
}
}
//
public Route(int iPriority, string strRoutrID)
{
miPriority = iPriority;
mstrRouteID = strRoutrID;
}
}
и при первом запросе я получаю состояние некоторого маршрута, и в цикле я создаю все объекты маршрута и добавляю их в список :
Route r1 = new Route(int.Parse(row["priority"].ToString()),row["routeID"].ToString());
r1.onPriorityChanged = new Route.PriorityChangedEventHandler(onRoutePriorityChanged);
listOfRouteObj .add(r1);
где функция onRoutePriorityChanged :
private void onRoutePriorityChanged(Route.EventArgsPriority e)
{
MessageBox.Show(e.oldPriority.ToString());
MessageBox.Show(e.newPriority.ToString());
}
до сих пор все было в порядке ,
но чего я не знаю, так это: когда через 10 минут придет время для следующего запроса, среди этих маршрутов некоторые отключены, некоторые добавлены новые, у некоторых изменен приоритет, как я могу обновить свой listOfRouteObj до новейшего состояния? например, для маршрута, идентификатор которого = 1, обновите его приоритет с 1000 до 2000 в зависимости от новой ситуации.
Ответ №1:
Вы можете использовать LINQ:
var route = listOfRouteObj.SingleOrDefault(route => route.RouteID.Equals("1"));
if(route != null)
route.Priority = 1000;
Это то, что вы имеете в виду??
Комментарии:
1. может быть, да, позвольте мне протестировать это
2. @yangl Хорошо, дайте мне знать, прошел ли он ваш тест;-)