2013-07-01 2 views
0

서비스를 호출하고 응답 객체를 반환하는 메소드가 있습니다. 응답 개체에 일부 데이터가 필요합니다. 내가 좋아하는 응답 후 점을함으로써 그들에 액세스 할 수 있습니다 :값에 대한 액세스 얻기

CVAResponse response = new CVAResponse(); 
       response = dataExchange.AddOrder(Username, Password, order); 
       OrderId= response.Data; 

가 나는 자신의 가치를 필요로 응답 객체의 일부 필드는 그들이 사용하여 액세스 할 수 없습니다 (응답 점)과 그들이 응답의 루트에없는 디버그 중에 응답 객체를 볼 때도 마찬가지입니다.

-base

내가 그에 액세스 할 수있는 방법을

  • BookClassLibrary.DataService.CVAOrderResponse : 그들은 같은이 이름 공간과 기지 내부에? (I는 응답 객체 후 점을 시도했지만이없는 그런이 일)에 CVAResponse 클래스가 다른 회사에 의해 기록되고 나는 정의에 갈 때 유일한 것은 내가보고되는

    : 또한

    public partial class CVAResponse : object,System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged { 
    
        [System.NonSerializedAttribute()] 
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField; 
    
        [System.Runtime.Serialization.OptionalFieldAttribute()] 
        private string DataField; 
    
        [System.Runtime.Serialization.OptionalFieldAttribute()] 
        private string ErrorMessageField; 
    
        [System.Runtime.Serialization.OptionalFieldAttribute()] 
        private BlueBookClassLibrary.DataExchangeService.eCVAResponseStatus StatusField; 
    
        [System.Runtime.Serialization.OptionalFieldAttribute()] 
        private string TicketIdField; 
    
        [global::System.ComponentModel.BrowsableAttribute(false)] 
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData { 
         get { 
          return this.extensionDataField; 
         } 
         set { 
          this.extensionDataField = value; 
         } 
        } 
    

    이 부분 클래스가 있습니다 :

     public partial class CVAOrderResponse : BlueBookClassLibrary.DataExchangeService.CVAResponse { 
    
        [System.Runtime.Serialization.OptionalFieldAttribute()] 
        private string XMLDataField; 
    
        [System.Runtime.Serialization.DataMemberAttribute()] 
        public string XMLData { 
         get { 
          return this.XMLDataField; 
         } 
         set { 
          if ((object.ReferenceEquals(this.XMLDataField, value) != true)) { 
           this.XMLDataField = value; 
           this.RaisePropertyChanged("XMLData"); 
          } 
         } 
        } 
    } 
    

    XMLDataField 값이 필요합니다. 또는 XMLData.

    은 다음과 같은 반사를 사용하여 해결할 수 있습니다 :이 나에게 XMLDATA 값을 가바

      var properties = response2.GetType().GetProperties(); 
    
    
          foreach (var property in properties) 
          { 
           string name = property.Name; 
           object value= property.GetValue(response2, null); 
           if (name == "XMLData") 
            xml = value.ToString(); 
    
          } 
    

    .

    var prop = response.GetType.GetProperties(BindingFlags.NonPublic | BindingFlags.Instance); 
    foreach (var prop in props) 
    { 
        prop.GetValue(response, null); 
    } 
    

    또는이 당신에게 모든 비공개 속성을 얻을 것이다 GetProperty("Name", <bindings>); 사용

+1

부분 클래스입니다. 아마도 당신이 찾고있는 정의는 이것과 일치하는 * other * 부분 클래스에 있습니다. –

+0

오 고마워, 나는 결코 눈치 채지 못했다. 나는 나의 질문에 도움이 될 다른 반을 가지고있다. – Alma

+1

디버그의 기본 메소드가 기본 클래스를 표시하지 않습니다 – Sayse

답변

1

당신은 반사 (하는 System.Reflection 네임 스페이스)를 사용하여, 다음과 같은 (구문은 약간 떨어져있을 수 있습니다). 비슷한 방법을 사용하여 GetFields 메서드로 비공개 필드를 시도 할 수 있습니다. 그러나, 나는 그것이 당신이 사적인 영역에 접근 할 수 있다고 믿지 않습니다.

+0

감사 인사가 저에게 효과적입니다. – Alma