我正在调用Sharepoint 2007 Lists
网络服务:
class ListUpdater
{
public void update(ListWS.Lists listService,XmlNode xNode)
{
listService.UpdateListItems("myListName", xNode);
}
}
因为我们正在迁移到Sharepoint 2013,所以我需要将此方法更改为:
class ListUpdater
{
public void update(ListWS_2013QA.Lists listService,XmlNode xNode)
{
listService.UpdateListItems("myListName", xNode);
}
}
其中ListWS_2013QA
是新网址的网络服务。
但是,我不想在声明Web服务实例的任何地方改变它,特别是如果我可能需要在应用程序的生命周期内多次更改Web服务。我正在考虑使用接口IListService
,以便我可以将方法重写为:
class ListUpdater
{
public void update(IListService listService,XmlNode xNode)
{
listService.UpdateListItems("myListName", xNode);
}
}
但是对于每个版本的Web服务,我都必须使用包装器来实现该接口,该包装器实现我在代码中使用的Lists
的每个方法,如下所示:
class ListsWrapper_2013QA:IListService
{
ListWS_2013QA.Lists listService;
public XmlNode DoSomething(string listName, XmlNode listProperties, XmlNode newFields, XmlNode updateFields, XmlNode deleteFields, string listVersion)
{
return listService.UpdateList(listName, listProperties, newFields, updateFields, deleteFields, listVersion);
}
public XmlNode UpdateListItems(string listName, XmlNode updates)
{
return listService.UpdateListItems(listName, updates);
}
}
有什么方法可以利用ListWS.Lists
和ListWS_2013QA
已经有相同方法的事实,所以我不必每次都想写一个广泛的包装类使用来自其他网址的Lists
服务?
答案 0 :(得分:0)
您可以创建一个继承IListService的类,并将其用作ListWrapper类的基类。