XmlSchemaProviderAttribute Klasse
TOC
Inhaltsverzeichnis reduzieren
Inhaltsverzeichnis erweitern
Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

XmlSchemaProviderAttribute-Klasse

 

Speichert bei Anwendung auf einen Typ den Namen einer statischen Methode des Typs, der ein XML-Schema und ein XmlQualifiedName-Element (oder bei anonymen Typen ein XmlSchemaType-Element) zurückgibt, das die Serialisierung des Typs steuert.

Namespace:   System.Xml.Serialization
Assembly:  System.Xml (in System.Xml.dll)

System.Object
  System.Attribute
    System.Xml.Serialization.XmlSchemaProviderAttribute

[AttributeUsageAttribute(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface)]
public sealed class XmlSchemaProviderAttribute : Attribute

NameBeschreibung
System_CAPS_pubmethodXmlSchemaProviderAttribute(String)

Initialisiert eine neue Instanz der XmlSchemaProviderAttribute-Klasse, wobei der Name der statischen Methode verwendet wird, die das XML-Schema des Typs bereitstellt.

NameBeschreibung
System_CAPS_pubpropertyIsAny

Dient zum Abrufen oder Festlegen eines Werts, der bestimmt, ob die Zielklasse ein Platzhalter ist oder das Schema für die Klasse nur ein xs:any-Element enthält.

System_CAPS_pubpropertyMethodName

Ruft den Namen der statischen Methode ab, die das XML-Schema des Typs und den Namen seines XML-Schemadatentyps bereitstellt.

System_CAPS_pubpropertyTypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.(Geerbt von Attribute.)

NameBeschreibung
System_CAPS_pubmethodEquals(Object)

Diese API unterstützt die producto-Infrastruktur und sollte nicht direkt aus Ihrem Code verwendet werden. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.(Geerbt von Attribute.)

System_CAPS_pubmethodGetHashCode()

Gibt den Hashcode für diese Instanz zurück.(Geerbt von Attribute.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von Object.)

System_CAPS_pubmethodIsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.(Geerbt von Attribute.)

System_CAPS_pubmethodMatch(Object)

Ruft beim Überschreiben in einer abgeleiteten Klasse gibt einen Wert, der angibt, ob diese Instanz gleich ein angegebenen Objekt ist.(Geerbt von Attribute.)

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von Object.)

NameBeschreibung
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.(Geerbt von Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.(Geerbt von Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).(Geerbt von Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.(Geerbt von Attribute.)

Der Hauptzweck der XmlSchemaProviderAttribute ist die Aktivierung der XmlSchemaExporter Klasse, um ein Schema zurückgegeben wird, wenn Sie von der Web Services Description Language-Tool (WSDL.exe) abgefragt oder bei der Verwendung der Webverweis hinzufügen Feature von Visual Studio. Sie können das eigentliche Schema für den Typ in der statischen Methode steuern.

System_CAPS_noteHinweis

Die Zielklasse des Attributs muss implementieren die IXmlSerializable Schnittstelle.

Die MethodName -Eigenschaft gibt den Namen einer statischen Methode durch Reflektion. Die Methode, die implementiert werden muss, muss einen einzelnen Parameter, nehmen eine XmlSchemaSet -Objekt, das mit der Methode füllt eine XmlSchema Objekt. Die Methode muss außerdem zurückgeben ein XmlQualifiedName -Objekt, das den Datentyp angibt.

Ein anonymer komplexer Typ kann nicht erstellt werden, verwenden eine Methode, zurückgibt XmlQualifiedName. Da ein anonymer Typ keinen Namen hat und Sie können keinen anonymen Typ in ein Schema hinzufügen, muss der anonyme Typ zurückgegeben werden, als ein XmlSchemaType.

Im folgenden Beispiel wird die XmlSchemaProviderAttribute auf eine serverseitige-Klasse. Beim Aufruf der Methode mit dem Namen durch die MethodName Eigenschaft das Schema erstellt. Diese einfache Implementierung liest ein vorhandenes Schema vom Datenträger. Sie können jedoch auch erstellen ein benutzerdefiniertes Schema, wenn erforderlich, die mit den Typen finden Sie in der System.Xml.Schema Namespace.

[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();

    }
}

Universal Windows Platform
Verfügbar seit 8
.NET Framework
Verfügbar seit 2.0
Portable Class Library
Unterstützt in: portable .NET platforms
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1

Öffentliche statische (in Visual Basic freigegebene) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Zurück zum Anfang
Anzeigen:
© 2016 Microsoft