晚上好,
我编写了一个需要执行更新的传输应用程序,然后更新与该更新相对应的日期。即。
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。
我该怎么做?
答案 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方法。