2011-12-22 3 views
1

Я пытаюсь использовать WCF в первый раз, однако я быстро ударил проблему, которую я не понимаю. Я еще не изменил исходную структуру автоматически сгенерированного кода. Я получил этот код для работы на веб-сайте.Использование типов данных WCF

using ServiceReference.ServiceClient wcfClient = new ServiceReference.ServiceClient()) 
{ 
    string data = wcfClient.GetData(32); 
    Label1.Text += data; 
} 

Но когда я начал использовать этот код, у меня возникла проблема.

ServiceReference.Kund kund; 

using (ServiceReference.ServiceClient wcfClient = new ServiceReference.ServiceClient()) 
{ 
    string data = wcfClient.GetDataUsingDataContract(kund); 
} 

У меня эта ошибка. Я не вижу никакой проблемы с типом данных, это не строка.

Не может неявно преобразовать тип 'Webbshop.ServiceReference.Kund' в 'строка'

Edit:

[ServiceContract] 
public interface IService 
{ 
    [OperationContract] 
    string GetData(int value); 

    [OperationContract] 
    Kund GetDataUsingDataContract(Kund kund); 
} 

[DataContract] 
public class Kund 
{ 
    int iD; 
    [DataMember] 
    public int ID 
    { 
     get { return iD; } 
     set { iD = value; } 
    } 
} 

ответ

1

Можете ли вы показать нам контракт на обслуживание (этот интерфейс IMyService, или любой другой это называется в вашем случае) у вас есть?

Как правило, образцы приложений, что служба WCF генерирует будет иметь один метод GetData, который возвращает строку, а второй метод, который показывает, как вернуть сложный тип данных

[ServiceContract] 
public interface IService1 
{ 
    [OperationContract] 
    string GetData(int value); 

    [OperationContract] 
    CompositeType GetDataUsingDataContract(CompositeType composite); 
} 

здесь: второй метод - после ваших изменений - возвращает Kund. Конечно, если вы звоните, что второй метод который возвращает Kund, вы не можете просто назначить всю Kund в строку .... вы должны сделать что-то вроде:

ServiceReference.Kund kund; 

using (ServiceReference.ServiceClient wcfClient = new ServiceReference.ServiceClient()) 
{ 
    Kund returnedKund = wcfClient.GetDataUsingDataContract(kund); 

    // then assign whatever properties from `data` you need to your string ..... 
    string data = returnedKund.ID.ToString(); // or something..... 
} 
+0

Я только изменил тип данных в интерфейс [ServiceContract] public interface IService { [OperationContract] string GetData(int value); [OperationContract] Kund GetDataUsingDataContract(Kund kund); // TODO: Add your service operations here } [DataContract] public class Kund { int iD; [DataMember] public int ID { get { return iD; } set { iD = value; } } } Frozendragon

+0

Теперь я вижу проблему, я пытаюсь присвоить возвращаемое значение строке, это так очевидно, я пропустил ее. xD – Frozendragon

+0

@Frozendragon: был там, сделал это - иногда это настолько очевидно, что вы просто не замечаете его, пытаясь понять это :-) Случается всем нам, я уверен :-) –

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