2012-04-26 1 views
0

Silverlight를 사용하여 응용 프로그램을 만들고 있습니다. 해당 응용 프로그램에서 나는 하나 개의 웹 서비스를 추가하고 웹 서비스에서 내가IDictionary를 구현하므로 System.Collections.IDictionary 형식의 System.Exception.Data 멤버를 serialize 할 수 없습니다.

[WebMethod(Description = "Write buffer log")]  
     public bool WriteLog(System.Collections.ObjectModel.ObservableCollection<LogBuffer> buffer) 
     { 
      bool result = true; 
      .//Some code here 
      return result; 
     } 

하나 개의 웹 메소드가하지만 난이 때문에 입력 System.Collections.IDictionary의 멤버 System.Exception.Data를 직렬화 할 수 없습니다 "로 오류를 얻고있다 그것은 IDictionary를 구현합니다. "

LogBuffer 클래스는 사전에 찾아 와요 고마워요 도와주세요

namespace WriterLog 
{ 
    [DataContract] 
    public class LogBuffer 
    { 
     [DataMember] 
     public string Message 
     { 
      get; 
      set; 
     } 
     [DataMember] 
     public Exception Exception 
     { 
      get; 
      set; 
     } 
     [DataMember] 
     public LogType LogType 
     { 
      get; 
      set; 
     } 
     [DataMember] 
     public string MethodName 
     { 
      get; 
      set; 
     } 
     [DataMember] 
     public string DeclaringType 
     { 
      get; 
      set; 
     } 
     [DataMember] 
     public DateTime LogTime 
     { 
      get; 
      set; 
     } 
    } 
} 

로입니다. ObservableCollection에의

답변

0

실버 라이트 버전은 http://msdn.microsoft.com/en-us/library/ms668604(v=vs.95).aspx

대신 일반 목록을 사용하려고 serializeable 없습니다. 여기 내가 사용하는 뭔가 그것은 응답을

[DataContractAttribute] 
public class InstrumentDataField : INotifyPropertyChanged 
    { 
    [DataMemberAttribute] 
    private string Value { get; set; } 

    [DataMemberAttribute] 
    public string Name { get; set; } 

    public InstrumentDataField(string field, string value) 
    { 
     this.Name = field; 
     this.Value = value; 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    public void NotifyPropertyChanged(string propertyName) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 

사용

[OperationContract] 
public List<InstrumentDataField> GetInstrumentData(string browserid, long tickCount) 
{ 
    //some code here 
} 
+0

감사를 작동하지만 대신 System.Collections.ObjectModel.ObservableCollection 의 나는 System.Collections.Generic.List 을 사용하지만 여전히 내가 무엇입니까 같은 오류. – Dany

+0

거기에 .. 실제 샘플을 추가했습니다. –

+0

Silverlight는 일반 웹 서비스 등을 좋아하지 않습니다. Add >> New >> Silverlight Webservice 옵션이 있습니다. –

관련 문제