这是我的模特:
public class ManageEngineSite
{
public string accountName { get; set; }
public string siteName { get; set; }
public string description { get; set; }
}
public class ManageEngineUpdateSite : ManageEngineSite
{
public string oldSiteName { get; set; }
}
当我基于ManageEngineUpdateSite模型实例化一个新对象时:
ManageEngineUpdateSite sitetoUpdate = new ManageEngineUpdateSite();
siteToUpdate.accountName = test1;
siteToUpdate.description = "test description";
siteToUpdate.siteName = "Site Name";
siteToUpdate.oldSiteName = "Old Site Name";
Operation responseModel = Test.UpdateSite(siteToUpdate);
如果我在最后一行代码处设置断点并检查对象,则它有一个如下的对象建模:
我相信这会破坏我的代码,因为传递的对象似乎缺少oldSiteName。
如何在模型上使用继承但仍能解决此问题?
答案 0 :(得分:1)
实际上,你没有问题。如快照中所示,您的对象具有属性oldSiteName
。调试器中显示的jsut略有不同,提醒您它是ManageEngineUpdateSite
对象的属性,而不是继承属性。
现在,也许您的Test.UpdateSite
方法接受ManageEngineSite
作为其参数。要访问该物业,您必须进行演员表。
var siteToUpdateAsManageEngineUpdateSite = siteToUpdate as ManageEngineUpdateSite;
if (siteToUpdateAsManageEngineUpdateSite != null)
{
var oldsiteName = siteToUpdateAsManageEngineUpdateSite.oldsiteName;
// Do things
...
}
虽然这不是一个非常干净的方式,但也许你应该向Test.UpdateSite
添加覆盖。
UpdateSite(ManageEngineUpdateSite siteToUpdate)
{
// Do generic things
UpdateSite((ManageEngineSite) siteToUpdate);
var oldsiteName = siteToUpdate.oldsiteName;
// Do specific things
...
}
很难说出你所做的事情的信息很少。