ServiceKnownTypeAttribute Klasse

Definition

Gibt die von einem Dienst bei der Serialisierung beziehungsweise Deserialisierung zu verwendenden bekannten Typen an.

public ref class ServiceKnownTypeAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Interface | System.AttributeTargets.Method, AllowMultiple=true, Inherited=true)]
public sealed class ServiceKnownTypeAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Interface | System.AttributeTargets.Method, AllowMultiple=true, Inherited=true)>]
type ServiceKnownTypeAttribute = class
    inherit Attribute
Public NotInheritable Class ServiceKnownTypeAttribute
Inherits Attribute
Vererbung
ServiceKnownTypeAttribute
Attribute

Beispiele

Im folgenden Beispiel wird das ServiceKnownTypeAttribute Attribut auf eine Schnittstelle angewendet, bei der das Attribut einen Methodennamen und einen deklarierenden Typ angibt.

// Define a service contract and apply the ServiceKnownTypeAttribute
// to specify types to include when generating client code.
// The types must have the DataContractAttribute and DataMemberAttribute
// applied to be serialized and deserialized. The attribute specifies the
// name of a method (GetKnownTypes) in a class (Helper) defined below.
[ServiceKnownType("GetKnownTypes", typeof(Helper))]
[ServiceContract()]
public interface ICatalog
{
    // Any object type can be inserted into a Hashtable. The
    // ServiceKnownTypeAttribute allows you to include those types
    // with the client code.
    [OperationContract]
    Hashtable GetItems();
}

// This class has the method named GetKnownTypes that returns a generic IEnumerable.
static class Helper
{
    public static IEnumerable<Type> GetKnownTypes(ICustomAttributeProvider provider)
    {
        System.Collections.Generic.List<System.Type> knownTypes =
            new System.Collections.Generic.List<System.Type>();
        // Add any types to include here.
        knownTypes.Add(typeof(Widget));
        knownTypes.Add(typeof(Machine));
        return knownTypes;
    }
}

[DataContract()]
public class Widget
{
    [DataMember]
    public string Id;
    [DataMember]
    public string Catalog;
}

[DataContract()]
public class Machine : Widget
{
    [DataMember]
    public string Maker;
}
' Define a service contract and apply the ServiceKnownTypeAttribute
' to specify types to include when generating client code. 
' The types must have the DataContractAttribute and DataMemberAttribute
' applied to be serialized and deserialized. The attribute specifies the 
' name of a method (GetKnownTypes) in a class (Helper) defined below.
<ServiceKnownType("GetKnownTypes", GetType(Helper)), ServiceContract()>  _
Public Interface ICalculator
    ' Any object type can be inserted into a Hashtable. The 
    ' ServiceKnownTypeAttribute allows you to include those types
    ' with the client code.
    <OperationContract()>  _
    Function GetItems() As Hashtable 
End Interface 

' This class has the method named GetKnownTypes that returns a generic IEnumerable.
Friend Class Helper
    Public Shared  Function GetKnownTypes(provider As ICustomAttributeProvider) _
     As IEnumerable(of Type) 
        Dim knownTypes As List(Of Type) = New List(Of Type)
        ' Add any types to include here.
        knownTypes.Add(GetType(Widget))
        knownTypes.Add(GetType(Machine))
        Return knownTypes
    End Function 
End Class 

<DataContract()>  _
Public Class Widget
    <DataMember()>  _
    Public Id As String
    <DataMember()>  _
    Public Catalog As String
End Class 

<DataContract()>  _
Public Class Machine
    Inherits Widget
    <DataMember()>  _
    Public Maker As String
End Class

Weisen Sie das Attribut alternativ der Schnittstelle zu, die angibt, welche bekannten Typen berücksichtigt werden sollen.

// Apply the ServiceKnownTypeAttribute to the
// interface specifying the type to include. Apply
// the attribute more than once if needed.
[ServiceKnownType(typeof(Widget))]
[ServiceKnownType(typeof(Machine))]
[ServiceContract()]
public interface ICatalog2
{
    // Any object type can be inserted into a Hashtable. The
    // ServiceKnownTypeAttribute allows you to include those types
    // with the client code.
    [OperationContract]
    Hashtable GetItems();
}
' Apply the ServiceKnownTypeAttribute to the 
' interface specifying the type to include. Apply the attribute
' more than once, if needed.
<ServiceKnownType(GetType(Widget)), ServiceKnownType(GetType(Machine)), _
 ServiceContract()>  _
Public Interface ICalculator2
    ' Any object type can be inserted into a Hashtable. The 
    ' ServiceKnownTypeAttribute allows you to include those types
    ' with the client code.
    <OperationContract()>  _
    Function GetItems() As Hashtable 
End Interface

Hinweise

Ist ServiceKnownTypeAttribute für die Verwendung beim Erstellen von Windows Communication Foundation (WCF)-Dienstverträgen (Schnittstellen, die den Dienst und seine Methoden definieren) vorgesehen. Die bekannten Typen sind Typen, die in einem Objektdiagramm vorhanden sein können, wenn serialisiert oder deserialisiert wird. Weitere Informationen zu bekannten Typen finden Sie unter Bekannte Typen für Den Datenvertrag.

Um die MethodName -Eigenschaft zu verwenden, erstellen Sie eine Klasse, die eine Methode (oder Methoden) enthält, die ein Array von Typen zurückgibt (jeder ist ein bekannter Typ). Legen Sie beim Anwenden des Attributs auf methodName den Namen einer Methode fest, die die Liste der Typen zurückgibt, und legen Sie den declaringType auf den Typ fest, der die -Methode enthält. Die -Methode muss einen Typ zurückgeben, der die IEnumerable<T> Schnittstelle implementiert. Die -Methode muss auch einen Parameter vom Typ ICustomAttributeProviderenthalten.

Sie können das Attribut auch mehrmals zu einer Schnittstelle, Klasse oder Methode zuweisen und dabei jedes Mal einen neuen bekannten Typ angeben.

Hinweis

Sie können das Wort ServiceKnownType in Ihrem Microsoft Visual Basic- oder C#-Code anstelle des längeren ServiceKnownTypeAttributeverwenden.

Konstruktoren

ServiceKnownTypeAttribute(String)

Initialisiert eine neue Instanz der ServiceKnownTypeAttribute-Klasse und gibt den Namen einer Methode an, die bekannte Typen zurückgibt.

ServiceKnownTypeAttribute(String, Type)

Initialisiert eine neue Instanz der ServiceKnownTypeAttribute-Klasse mit dem Namen einer Methode, die bekannte Typen zurückgibt, und den Typ, der die Methoden beinhaltet, die die bekannten Typen zurückgeben.

ServiceKnownTypeAttribute(Type)

Initialisiert eine neue Instanz der ServiceKnownTypeAttribute-Klasse mit dem angegebenen bekannten Typ.

Eigenschaften

DeclaringType

Ruft den Typ ab, der die Methoden enthält, die die bekannten Typen zurückgeben.

MethodName

Ruft den Namen einer Methode ab, die die Auflistung bekannter Typen zurückgibt.

Type

Der bekannte Typ, der in einem Objektdiagramm enthalten sein kann.

TypeId

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

(Geerbt von Attribute)

Methoden

Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.

(Geerbt von Attribute)
GetHashCode()

Gibt den Hashcode für diese Instanz zurück.

(Geerbt von Attribute)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
IsDefaultAttribute()

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

(Geerbt von Attribute)
Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.

(Geerbt von Attribute)
_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)
_Attribute.GetTypeInfoCount(UInt32)

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

(Geerbt von Attribute)
_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)

Gilt für:

Weitere Informationen