C# - 存储然后更新属性

时间:2009-02-16 21:52:42

标签: compact-framework .net-2.0 properties c#-2.0

晚上好,

我编写了一个需要执行更新的传输应用程序,然后更新与该更新相对应的日期。即。

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静态类中更新相应的Date Get / Set。

我该怎么做?

5 个答案:

答案 0 :(得分:1)

不是说我认为这是一个很好的代码,但这正是你要找的吗?

private DateTime configDate;

private DateTime ConfigDate
{
  get { return configDate; }
  set 
  {
    configDate = value;
    ivdConfig.TheDate = value;
  }
} 

答案 1 :(得分:1)

您是否考虑过州模式?

对表(表变量)进行子类化并添加一个虚拟方法(可能是Update()?)然后在每个特定的表类型中覆盖它。这将完全删除else ifs,因为它将成为:

table.Update();

传递此调用所需的所有对象,然后从表中获取值(因为它可以在Update()的实现中更新其自己的特定日期属性。)

如果我有错误的结局,我道歉但我不能100%确定你要求的是诚实。

答案 2 :(得分:0)

听起来就像你需要这么简单:

manager.Date = configDate;

这意味着我几乎肯定是错的......

答案 3 :(得分:0)

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...)
    {
        ...
    }
}

答案 4 :(得分:0)

确实存在PropertyInfo.SetValue方法。