2011-04-18 59 views
2

我需要從以下類閱讀XmlTypeAttribute,得到Namespace值:如何動態讀取類XmlTypeAttribute以獲取命名空間?

<System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42"), _ 
System.SerializableAttribute(), _ 
System.Diagnostics.DebuggerStepThroughAttribute(), _ 
System.ComponentModel.DesignerCategoryAttribute("code"), _ 
System.Xml.Serialization.XmlTypeAttribute([Namespace]:="http://webservices.micros.com/ows/5.1/Availability.wsdl")> _ 
Partial Public Class AvailabilityRequest 
Inherits AvailRequestSegmentList 

Private summaryOnlyField As Boolean 

Private xsnField As System.Xml.Serialization.XmlSerializerNamespaces 

'''<comentarios/> 
<System.Xml.Serialization.XmlAttributeAttribute()> _ 
Public Property summaryOnly() As Boolean 
    Get 
     Return Me.summaryOnlyField 
    End Get 
    Set 
     Me.summaryOnlyField = value 
    End Set 
End Property 

用下面的代碼,我可以爲System.SerializableAttribute值,但我不能檢索有關XmlTypeAttribute信息。

var ar = typeof (AvailabilityRequest).GetType(); 
ar.GetCustomAttributes(true); 

更新2011年12月29日

下面的代碼現在工作:

var xmlAttribute = (XmlTypeAttribute)Attribute.GetCustomAttribute(
          typeof(AvailabilityRequest), 
          typeof(XmlTypeAttribute) 
         ); 
    XNamespace ns = xmlAttribute.Namespace; 
    ns.NamespaceName.Should().Be.EqualTo("http://webservices.micros.com/ows/5.1/Availability.wsdl"); 

回答

5

屬性類呼籲GetCustomAttribute靜態方法。

這裏的用法:

XmlTypeAttribute xmlAttribute = (XmlTypeAttribute)Attribute.GetCustomAttribute(
            typeof(theType), 
            typeof(XmlTypeAttribute) 
           ); 
XNamespace ns = xmlAttribute.Namespace; 
+1

感謝佩裏的工作,只是在theType改變的typeof,對於類 – 2011-12-29 17:39:16

+0

@Carlos - 方法的語法固定 – 2013-01-30 17:26:13