2015-09-21 2 views
-5

Я звоню 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 является веб-сервис по новому URL-адресу.

Тем не менее, я не хочу изменять это везде, когда объявляется экземпляр веб-службы, особенно если мне придется несколько раз менять веб-службу на всю жизнь приложения. Я думал о том, интерфейс IListService так, что я мог бы переписать метод как:

class ListUpdater 
{ 
    public void update(IListService listService,XmlNode xNode) 
    { 
     listService.UpdateListItems("myListName", xNode); 
    } 
} 

Но тогда для каждой версии веб-службы, я должен реализовать интерфейс с оберткой, которая реализует каждый метод 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 другой URL?

+1

Итак, где именно вы получаете сообщение об ошибке в своем заголовке в своем коде? – juharr

+0

@steve, название было из другого вопроса, который я разрешил перед публикацией, и я забыл изменить его, когда я разместил эту проблему. Сейчас я изменю его. – sigil

+0

@juharr, см. Мой ответ на комментарий Стива. – sigil

ответ

0

Вы можете создать класс, наследующий IListService, и использовать его в качестве базового класса для классов ListWrapper.

Смежные вопросы