2015-04-21 7 views
0

Я пытаюсь использовать один сервис WCF, так как у нас нет URL-адреса службы, мы получили XSD и WSDL. На данный момент, пытаясь использовать POC для этого. Использование файла svcutil файла genarated class. Я не очень хорошо разбираюсь в материалах WCF, поэтому сначала попытаюсь использовать эти классы в C#.Как получить доступ к сложным типам Аргумент в C#

Ниже мой полный код:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
namespace smsclient 
{ 
    public interface ISendSms 
    { 
    sendMessageResponse1 sendMessage(sendMessageRequest request); 
    } 

    public class AccessSMSDetails: ISendSms 
    { 

    sendMessageResponse1 ISendSms.sendMessage(sendMessageRequest request) 
     { 
      //Here is my implementation code.   
      sendMessageResponse sresponse = new sendMessageResponse(); 
      sresponse.messageid = 1; 
      sresponse.recipient = "Chiranjeevi"; 
      sresponse.reference = "reference"; 
      sresponse.status = "sucsesss"; 

      sendMessageResponse1 sresponse1 = new sendMessageResponse1(sresponse); 
      return sresponse1; 

     } 
    } 

    public class Program 
    { 
     static void Main(string[] args) 
     { 
      sendMessage sm = new sendMessage(); 
      sm.content = "Content"; 
      sm.destination = "Destination"; 
      sm.reference = "reference"; 
      sendMessageRequest sRequest = new sendMessageRequest(sm); 
      sendMessageResponse1 sclient = new sendMessageResponse1(); 
      AccessSMSDetails asms = new AccessSMSDetails(); 
      //sclient=    
      // Here I am not getting the interface Method name to call. Please correct Me if this approach is wrong. 
     } 
    } 
} 

В последней строке я не могу вызвать метод интерфейса.

ответ

0

Вы используете explicit interface implementation. Следовательно, вам нужно привести переменную asms к соответствующему типу интерфейса для его работы:

((ISendSms)asms).sendMessage(…); 

С другой стороны, если это возможно в вашем случае использовать не явную реализацию:

public class AccessSMSDetails: ISendSms 
{ 
    public sendMessageResponse1 sendMessage(sendMessageRequest request) 
    { 
    } 
} 

, а затем вы может вызвать метод, как обычно:

asms.sendMessage(…); 
+0

@Tunchy: Если я добавляю строку ниже, получаюшую исключение. sclient = ((ISendSms) asms) .sendMessage (sRequest); Ошибка \t \t 1 'smsclient.AccessSMSDetails' не реализует элемент интерфейса 'smsclient.ISendSms.sendMessage()' \t \t линия №: 169 \t \t 18 smsclient – Chiranjeevi

+0

Почему бросить, когда мы можем объявить! – Amit

+0

@Amit Потому что ему может потребоваться доступ к полному классу, а не только к интерфейсу ... –

0

Попробуйте с

ISendSms asms = new AccessSMSDetails(); 
asms.sendMessage(request); 

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

  • Нет связанных вопросов^_^