ServiceKnownTypeAttribute Klasse

Definition

Gibt bekannte Typen an, die von einem Dienst bei der Serialisierung oder Deserialisierung verwendet werden sollen.Specifies known types to be used by a service when serializing or deserializing.

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
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, wobei das-Attribut einen Methodennamen und einen deklarierenden Typ angibt.The following example applies the ServiceKnownTypeAttribute attribute to an interface where the attribute specifies a method name and a declaring type.

// 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.Alternatively, apply the attribute to the interface specifying the known type to include.

// 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

Der ServiceKnownTypeAttribute ist für die Verwendung beim Erstellen von Windows Communication Foundation (WCF)-Dienstverträgen (Schnittstellen, die den Dienst und seine Methoden definieren) vorgesehen.The ServiceKnownTypeAttribute is intended for use when creating Windows Communication Foundation (WCF) service contracts (interfaces that define the service and its methods). Die bekannten Typen sind Typen, die bei der Serialisierung oder Deserialisierung in einem Objekt Diagramm vorhanden sein können.The known types are types that may be present in an object graph when serialization or deserialization occurs. Weitere Informationen zu bekannten Typen finden Sie unter Data Contract Known Types.For more information about known types, see Data Contract Known Types.

Wenn Sie die MethodName-Eigenschaft verwenden möchten, erstellen Sie eine-Klasse, die eine Methode (oder Methoden) enthält, die ein Array von Typen zurückgibt (jedes ist ein bekannter Typ).To use the MethodName property, create a class that contains a method (or methods) that returns an array of types (each being a known type). Legen Sie beim Anwenden des-Attributs den methodName auf den Namen einer Methode fest, die die Liste der Typen zurückgibt, und legen Sie die declaringType auf den Typ fest, der die Methode enthält.When applying the attribute, set the methodName to the name of a method that returns the list of types and set the declaringType to the type that contains the method. Die-Methode muss einen Typ zurückgeben, der die IEnumerable<T>-Schnittstelle implementiert.The method must return a type that implements the IEnumerable<T> interface. Die-Methode muss auch einen Parameter vom Typ ICustomAttributeProviderenthalten.The method must also include a parameter of type ICustomAttributeProvider.

Sie können das Attribut auch mehrmals zu einer Schnittstelle, Klasse oder Methode zuweisen und dabei jedes Mal einen neuen bekannten Typ angeben.You can also apply the attribute several times to an interface, class, or method, each time specifying a new known type.

Hinweis

Sie können das Wort ServiceKnownType in Ihrem Microsoft-Visual Basic oder C# -Code verwenden, anstatt das längere ServiceKnownTypeAttributezu verwenden.You can use the word ServiceKnownType in your Microsoft Visual Basic or C# code instead of the longer ServiceKnownTypeAttribute.

Konstruktoren

ServiceKnownTypeAttribute(String)

Initialisiert eine neue Instanz der ServiceKnownTypeAttribute-Klasse und gibt den Namen einer Methode an, die bekannte Typen zurückgibt.Initializes a new instance of the ServiceKnownTypeAttribute class and specifies the name of a method that returns the known types.

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.Initializes a new instance of the ServiceKnownTypeAttribute class with the name of a method that returns the known types and the type that contains the method (or methods) that returns the known types.

ServiceKnownTypeAttribute(Type)

Initialisiert eine neue Instanz der ServiceKnownTypeAttribute-Klasse mit dem angegebenen bekannten Typ.Initializes a new instance of the ServiceKnownTypeAttribute class with the specified known type.

Eigenschaften

DeclaringType

Ruft den Typ ab, der die Methoden enthält, die die bekannten Typen zurückgeben.Gets the type that contains the methods that return the known types.

MethodName

Ruft den Namen einer Methode ab, die die Auflistung bekannter Typen zurückgibt.Gets the name of a method that returns the collection of known types.

Type

Der bekannte Typ, der in einem Objektdiagramm enthalten sein kann.The known type that can be included in an object graph.

TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.When implemented in a derived class, gets a unique identifier for this Attribute.

(Geerbt von Attribute)

Methoden

Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.Returns a value that indicates whether this instance is equal to a specified object.

(Geerbt von Attribute)
GetHashCode()

Gibt den Hashcode für diese Instanz zurück.Returns the hash code for this instance.

(Geerbt von Attribute)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(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.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(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.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.Maps a set of names to a corresponding set of dispatch identifiers.

(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.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Geerbt von Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).Retrieves the number of type information interfaces that an object provides (either 0 or 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.Provides access to properties and methods exposed by an object.

(Geerbt von Attribute)

Gilt für:

Siehe auch