XmlSchemaProviderAttribute Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir türe uygulandığında, XML şeması döndüren türün statik yönteminin adını ve türün serileştirmesini denetleen bir XmlQualifiedName (veya XmlSchemaType anonim türler için) depolar.
public ref class XmlSchemaProviderAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Interface | System.AttributeTargets.Struct)]
public sealed class XmlSchemaProviderAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Interface | System.AttributeTargets.Struct)>]
type XmlSchemaProviderAttribute = class
inherit Attribute
Public NotInheritable Class XmlSchemaProviderAttribute
Inherits Attribute
- Devralma
- Öznitelikler
Örnekler
Aşağıdaki örnek , XmlSchemaProviderAttribute sunucu tarafı sınıfına uygulanır. Çağrıldığında, özelliği tarafından MethodName adlı yöntem şemayı oluşturur. Bu basit uygulama diskten mevcut bir şemayı okur. Ancak, gerekirse ad alanında System.Xml.Schema bulunan türleri kullanarak özel bir şema da oluşturabilirsiniz.
[XmlSchemaProvider("MySchema")]
public class SongStream : IXmlSerializable
{
private const string ns = "http://demos.Contoso.com/webservices";
private string filePath;
public SongStream() { }
public SongStream(string filePath)
{
this.filePath = filePath;
}
// This is the method named by the XmlSchemaProviderAttribute applied to the type.
public static XmlQualifiedName MySchema(XmlSchemaSet xs)
{
// This method is called by the framework to get the schema for this type.
// We return an existing schema from disk.
XmlSerializer schemaSerializer = new XmlSerializer(typeof(XmlSchema));
string xsdPath = null;
// NOTE: replace the string with your own path.
xsdPath = System.Web.HttpContext.Current.Server.MapPath("SongStream.xsd");
XmlSchema s = (XmlSchema)schemaSerializer.Deserialize(
new XmlTextReader(xsdPath), null);
xs.XmlResolver = new XmlUrlResolver();
xs.Add(s);
return new XmlQualifiedName("songStream", ns);
}
void IXmlSerializable.WriteXml(System.Xml.XmlWriter writer)
{
// This is the chunking code.
// ASP.NET buffering must be turned off for this to work.
int bufferSize = 4096;
char[] songBytes = new char[bufferSize];
FileStream inFile = File.Open(this.filePath, FileMode.Open, FileAccess.Read);
long length = inFile.Length;
// Write the file name.
writer.WriteElementString("fileName", ns, Path.GetFileNameWithoutExtension(this.filePath));
// Write the size.
writer.WriteElementString("size", ns, length.ToString());
// Write the song bytes.
writer.WriteStartElement("song", ns);
StreamReader sr = new StreamReader(inFile, true);
int readLen = sr.Read(songBytes, 0, bufferSize);
while (readLen > 0)
{
writer.WriteStartElement("chunk", ns);
writer.WriteChars(songBytes, 0, readLen);
writer.WriteEndElement();
writer.Flush();
readLen = sr.Read(songBytes, 0, bufferSize);
}
writer.WriteEndElement();
inFile.Close();
}
System.Xml.Schema.XmlSchema IXmlSerializable.GetSchema()
{
throw new System.NotImplementedException();
}
void IXmlSerializable.ReadXml(System.Xml.XmlReader reader)
{
throw new System.NotImplementedException();
}
}
<XmlSchemaProvider("MySchema")> _
Public Class SongStream
Implements IXmlSerializable
Private Const ns As String = "http://demos.Contoso.com/webservices"
Private filePath As String
Public Sub New()
End Sub
Public Sub New(ByVal filePath As String)
Me.filePath = filePath
End Sub
' This is the method named by the XmlSchemaProviderAttribute applied to the type.
Public Shared Function MySchema(ByVal xs As XmlSchemaSet) As XmlQualifiedName
' This method is called by the framework to get the schema for this type.
' We return an existing schema from disk.
Dim schemaSerializer As New XmlSerializer(GetType(XmlSchema))
Dim xsdPath As String = Nothing
' NOTE: replace SongStream.xsd with your own schema file.
xsdPath = System.Web.HttpContext.Current.Server.MapPath("SongStream.xsd")
Dim s As XmlSchema = CType(schemaSerializer.Deserialize(New XmlTextReader(xsdPath)), XmlSchema)
xs.XmlResolver = New XmlUrlResolver()
xs.Add(s)
Return New XmlQualifiedName("songStream", ns)
End Function
Sub WriteXml(ByVal writer As System.Xml.XmlWriter) Implements IXmlSerializable.WriteXml
' This is the chunking code.
' ASP.NET buffering must be turned off for this to work.
Dim bufferSize As Integer = 4096
Dim songBytes(bufferSize) As Char
Dim inFile As FileStream = File.Open(Me.filePath, FileMode.Open, FileAccess.Read)
Dim length As Long = inFile.Length
' Write the file name.
writer.WriteElementString("fileName", ns, Path.GetFileNameWithoutExtension(Me.filePath))
' Write the size.
writer.WriteElementString("size", ns, length.ToString())
' Write the song bytes.
writer.WriteStartElement("song", ns)
Dim sr As New StreamReader(inFile, True)
Dim readLen As Integer = sr.Read(songBytes, 0, bufferSize)
While readLen > 0
writer.WriteStartElement("chunk", ns)
writer.WriteChars(songBytes, 0, readLen)
writer.WriteEndElement()
writer.Flush()
readLen = sr.Read(songBytes, 0, bufferSize)
End While
writer.WriteEndElement()
inFile.Close()
End Sub
Function GetSchema() As System.Xml.Schema.XmlSchema Implements IXmlSerializable.GetSchema
Throw New System.NotImplementedException()
End Function
Sub ReadXml(ByVal reader As System.Xml.XmlReader) Implements IXmlSerializable.ReadXml
Throw New System.NotImplementedException()
End Sub
End Class
Açıklamalar
öğesinin XmlSchemaProviderAttribute temel amacı, sınıfın XmlSchemaExporter Web Hizmetleri Açıklama Dili aracı (WSDL.exe) tarafından sorgulandığında veya Visual Studio Web Başvurusu Ekle özelliğini kullanırken bir şema döndürmesini sağlamaktır. Statik yöntemde türün gerçek şemasını denetleyebilirsiniz.
Not
özniteliğinin hedef sınıfı arabirimini IXmlSerializable uygulamalıdır.
MethodName özelliği, yansıma aracılığıyla statik bir yöntemin adını döndürür. Uygulanması gereken yöntemin, yöntemin bir nesneyle dolduracağı tek bir XmlSchemaSet parametre olan bir XmlSchema nesnesi alması gerekir. yöntemi, veri türünü tanımlayan bir XmlQualifiedName nesne de döndürmelidir.
Anonim Türleri Döndürme
Anonim karmaşık tür, döndüren XmlQualifiedNamebir yöntem kullanılarak oluşturulamaz. Anonim türün adı olmadığından ve bir şemaya anonim tür ekleyemediğiniz için anonim tür olarak XmlSchemaTypedöndürülmelidir.
Oluşturucular
XmlSchemaProviderAttribute(String) |
Türün XML şemasını XmlSchemaProviderAttribute sağlayan statik yöntemin adını alarak sınıfının yeni bir örneğini başlatır. |
Özellikler
IsAny |
Hedef sınıfın joker karakter olup olmadığını veya sınıfın şemasının yalnızca bir öğe içerdiğini belirleyen bir |
MethodName |
Türün XML şemasını sağlayan statik yöntemin adını ve XML Şeması veri türünün adını alır. |
TypeId |
Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır. (Devralındığı yer: Attribute) |
Yöntemler
Equals(Object) |
Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür. (Devralındığı yer: Attribute) |
GetHashCode() |
Bu örneğe ilişkin karma kodu döndürür. (Devralındığı yer: Attribute) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
IsDefaultAttribute() |
Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir. (Devralındığı yer: Attribute) |
Match(Object) |
Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür. (Devralındığı yer: Attribute) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |
Belirtik Arabirim Kullanımları
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler. (Devralındığı yer: Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır. (Devralındığı yer: Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1). (Devralındığı yer: Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Bir nesne tarafından sunulan özelliklere ve yöntemlere erişim sağlar. (Devralındığı yer: Attribute) |