2012-05-22 2 views
0

Как инициализировать класс в WCF?Datacontract в wcf

Предположим, я просто хочу сделать сумму двух членов в классе.

Я закодирован в IService как:

[DataContract] 
class Sample 
{ 
    public int i { get; set; } 
    public int q { get; set; } 
} 

[OperationContract] 
public int Sum(Sample obj); 

И в обслуживании:

public int Sum(Sample obj) 
{ 
} 

Что добавлено кодирование требуют, чтобы сделать этот бег, как я путать с классом декларации в обеих страницах ?

+1

Вам необходимо поставить DataMemberAttribute в свои свойства –

+0

извините, я пропустил это. но на странице обслуживания он показывает отсутствие объекта-образца (это очевидно, так как я dnt имеет класс), но нужно ли снова добавлять объявление класса на странице службы? или каким-то другим способом?> –

ответ

4

Обычно он будет установлен, как показано ниже. Вы должны четко отделить услугу от контрактов с данными.

[ServiceContract] 
public interface ISampleService 
{ 
     [OperationContract] 
     int sum(SampleData obj); 
} 

public class SampleService : ISampleService 
{ 
     public int sum(SampleData obj) 
     { 
      // logic here 
     } 
} 

[DataContract] 
public class SampleData 
{ 
     [DataMember] 
     public int i { get; set; } 

     [DataMember] 
     public int q { get; set; } 
} 
+0

спасибо, сэр, теперь он работает. –