ServiceKnownTypeAttribute ServiceKnownTypeAttribute ServiceKnownTypeAttribute ServiceKnownTypeAttribute Class

Definizione

Consente di specificare i tipi conosciuti utilizzati da un servizio durante la serializzazione o la deserializzazione.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
Ereditarietà
ServiceKnownTypeAttributeServiceKnownTypeAttributeServiceKnownTypeAttributeServiceKnownTypeAttribute
Attributi

Esempi

Nell'esempio seguente l'attributo ServiceKnownTypeAttribute viene applicato a un'interfaccia in modo da specificare un nome di metodo e un tipo dichiarante.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 

In alternativa, l'attributo può essere applicato all'interfaccia in modo da specificare il tipo conosciuto da includere.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 

Commenti

Il ServiceKnownTypeAttribute deve essere utilizzato durante la creazione di contratti di servizio Windows Communication Foundation (WCF) (interfacce che definiscono il servizio e i relativi metodi).The ServiceKnownTypeAttribute is intended for use when creating Windows Communication Foundation (WCF) service contracts (interfaces that define the service and its methods). I tipi conosciuti sono tipi che possono essere presenti in un oggetto grafico quando si verifica la serializzazione o la deserializzazione.The known types are types that may be present in an object graph when serialization or deserialization occurs. Per ulteriori informazioni sui tipi noti, vedere tipi noti del contratto dati.For more information about known types, see Data Contract Known Types.

Per utilizzare la proprietà MethodName, creare una classe contenente uno o più metodi che restituiscono una matrice di tipi, ognuno di essi corrispondente a un tipo conosciuto.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). Quando si applica l'attributo, impostare il parametro methodName sul nome di un metodo che restituisce l'elenco dei tipi e quindi impostare il parametro declaringType sul tipo contenente il metodo.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. Questo metodo deve restituire un tipo che implementa l'interfaccia IEnumerable<T>.The method must return a type that implements the IEnumerable<T> interface. È inoltre necessario che nel metodo sia presente un parametro di tipo ICustomAttributeProvider.The method must also include a parameter of type ICustomAttributeProvider.

L'attributo può anche essere applicato più volte a un'interfaccia, a una classe o a un metodo, specificando ogni volta un nuovo tipo conosciuto.You can also apply the attribute several times to an interface, class, or method, each time specifying a new known type.

Nota

Nel codice Microsoft Visual Basic o C# è possibile utilizzare la parola chiave ServiceKnownType anziché la versione più lunga ServiceKnownTypeAttribute.You can use the word ServiceKnownType in your Microsoft Visual Basic or C# code instead of the longer ServiceKnownTypeAttribute.

Costruttori

ServiceKnownTypeAttribute(String) ServiceKnownTypeAttribute(String) ServiceKnownTypeAttribute(String) ServiceKnownTypeAttribute(String)

Inizializza una nuova istanza della classe ServiceKnownTypeAttribute e specifica il nome di un metodo che restituisce i tipi conosciuti.Initializes a new instance of the ServiceKnownTypeAttribute class and specifies the name of a method that returns the known types.

ServiceKnownTypeAttribute(String, Type) ServiceKnownTypeAttribute(String, Type) ServiceKnownTypeAttribute(String, Type) ServiceKnownTypeAttribute(String, Type)

Consente di inizializzare una nuova istanza della classe ServiceKnownTypeAttribute con il nome di un metodo e con il tipo contenente i metodi che restituiscono i tipi conosciuti.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) ServiceKnownTypeAttribute(Type) ServiceKnownTypeAttribute(Type) ServiceKnownTypeAttribute(Type)

Consente di inizializzare una nuova istanza della classe ServiceKnownTypeAttribute con il tipo conosciuto specificato.Initializes a new instance of the ServiceKnownTypeAttribute class with the specified known type.

Proprietà

DeclaringType DeclaringType DeclaringType DeclaringType

Consente di ottenere il tipo contenente i metodi che restituiscono i tipi conosciuti.Gets the type that contains the methods that return the known types.

MethodName MethodName MethodName MethodName

Consente di ottenere il nome di un metodo che restituisce la raccolta di tipi conosciuti.Gets the name of a method that returns the collection of known types.

Type Type Type Type

Tipo conosciuto che può essere incluso in un oggetto grafico.The known type that can be included in an object graph.

TypeId TypeId TypeId TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Metodi

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Restituisce il codice hash per l'istanza.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)

Implementazioni dell'interfaccia esplicita

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

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Si applica a

Vedi anche