C # - сохранить, а затем обновить свойство - PullRequest
0 голосов
/ 17 февраля 2009

Вечер всех,

Я написал приложение для передачи, которое должно выполнить обновление, а затем обновить дату, соответствующую этому обновлению. * Т.е. 1003 *

string content = string.Empty;
IIvdManager manager;
DateTime configDate;

if (table == Tables.Asset)
{
    content = WebService.GetTblAsset(companyId);
    manager = ivdData.Instance.Asset;
    configDate = ivdConfig.LAST_UPDATE_ASSET;
}
else if (table == Tables.Site)
{
    content = WebService.GetTblSite(companyId);
    manager = ivdData.Instance.Site;
    configDate = ivdConfig.LAST_UPDATE_SITE;
}
else if (table...)
{
    ...
}

if (content.Length > 0)
{
    if (UpdateManager(manager, content))
    {
        configDate = DateTime.Now;
    }

}

Я хочу, чтобы свойство configDate обновляло соответствующую дату получения / установки в моем статическом классе ivdConfig.

Как я могу это сделать?

Ответы [ 5 ]

1 голос
/ 23 февраля 2009

Рассматривали ли вы государственную модель?

Создайте подкласс вашей таблицы (переменную таблицы) и добавьте виртуальный метод (возможно, Update ()?), Который вы затем переопределите в каждом конкретном типе таблицы. Это полностью удалит else if, как только станет:

table.Update();

Передайте любые объекты, которые вам нужны, для этого вызова, а затем получите значение обратно из таблицы (поскольку он может обновить свое собственное свойство даты в рамках своей реализации Update ()).

Я прошу прощения, если у меня неправильный конец палки, но я не уверен на 100%, что вы просите, чтобы быть честным.

1 голос
/ 17 февраля 2009

Не то чтобы я думаю, что это хороший код, но это то, что вы ищете?

private DateTime configDate;

private DateTime ConfigDate
{
  get { return configDate; }
  set 
  {
    configDate = value;
    ivdConfig.TheDate = value;
  }
} 
0 голосов
/ 17 февраля 2009

Что ж, существует метод PropertyInfo.SetValue.

0 голосов
/ 17 февраля 2009

Тип DateTime является типом значения, поэтому приведенный выше код просто скопирует значение ivdConfig.LAST_UPDATE_SITE в dateToUpdate, а не ссылку на.

Чтобы решить вашу проблему, вы можете сделать следующее:

if (table == Tables.Asset)
{
    content = WebService.GetTblAsset(companyId);
    manager = ivdData.Instance.Asset;
}
else if (table == Tables.Site)
{
    content = WebService.GetTblSite(companyId);
    manager = ivdData.Instance.Site;
}
else if (table...)
{
    ...
}

if ((content.Length > 0) && UpdateManager(manager, content))
{
    DateTime updateDate = DateTime.Now;

    if (table == Tables.Asset)
    {
        ivdConfig.LAST_UPDATE_ASSET = updateDate;
    }
    else if (table == Tables.Site)
    {
        ivdConfig.LAST_UPDATE_SITE = updateDate;
    }
    else if (table...)
    {
        ...
    }
}
0 голосов
/ 17 февраля 2009

Звучит так просто, как вам нужно это сделать:

manager.Date = configDate;

Что означает, что я почти наверняка ошибаюсь ...

...