12.03.2015, 13:16 | #1 |
Участник
|
Знатоки C# , помогите с webservices
Есть внешний вебсервис, который надо вызывать из аксапты.
Для этого есть три разных wsdl: каждый соответствует соответствующей dev, test или prod инсталляции. Набор объектов/методов в них одинаковые Чтобы вызывать эти вебсервисы создано три c# проекта. У каждого свой namespace SomeClass.DEV, SomeClass.TEST, SomeClass.PROD , но каждый по сути имеет внутри одну и ту же логику(один и тот же набор методов) В AX соответственно пишется : Если текущий environment = TEST, то myObj = MyPrjNamespace.TEST. methodAbc() Если текущий environment = DEV, то myObj = MyPrjNamespace.DEV. methodAbc() etc Вообщем, выглядит коряво, но я не знаю, может, оно так и правильно? (( В теории , мне кажется, можно было бы добавить все три wsdl в один проект и передавать параметр - методы из какого serviceRef вызывать. Но тут у меня возникает вопрос: Если добавить в один проект три разных ServiceRef, то будет три namespace: MyPrjNamespace.ServiceRef1, MyPrjNamespace.ServiceRef2, MyPrjNamespace.ServiceRef3 Соответственно, если есть сейчас какой-то метод, создающий некий объект: createMyObj() { myObj = new MyPrjNamespace.ServiceRef1.objectToCreate(); } то как должен выглядеть этот метод, если надо создать этот объект из соответствующего ServiceRef (одного из трех)? То есть, можно ли, передав из аксапты имя текущего environment, присвоить некоторому alias выбранный namespace, и поэтому не писать вот так: X++: createMyObj() { if (environmentParam = 'DEV') myObj = new MyPrjNamespace.ServiceRef1.objectToCreate(); if (environmentParam = 'TEST') myObj = new MyPrjNamespace.ServiceRef2.objectToCreate(); if (environmentParam = 'UAT') myObj = new MyPrjNamespace.ServiceRef3.objectToCreate(); } createMyOtherObj() { if (environmentParam = 'DEV') myOtherObj = new MyPrjNamespace.ServiceRef1.someOtherObjectToCreate(); if (environmentParam = 'TEST') myOtherObj = new MyPrjNamespace.ServiceRef2.someOtherObjectToCreate(); if (environmentParam = 'UAT') myOtherObj = new MyPrjNamespace.ServiceRef3.someOtherObjectToCreate(); } X++: setNameSpaceAlias() { if (environmentParam = 'DEV') MyPrjNamespace.ServiceRefAlias = new MyPrjNamespace.ServiceRef1; if (environmentParam = 'TEST') MyPrjNamespace.ServiceRefAlias = new MyPrjNamespace.ServiceRef2; if (environmentParam = 'UAT') MyPrjNamespace.ServiceRefAlias = new MyPrjNamespace.ServiceRef3; } alias: createMyObj() { myObj = new MyPrjNamespace.ServiceRefAlias.objectToCreate(); } createMyOtherObj() { myOtherObj = new MyPrjNamespace.ServiceRefAlias.someOtherObjectToCreate(); } etc |
|