ServiceKnownTypeAttribute ServiceKnownTypeAttribute ServiceKnownTypeAttribute ServiceKnownTypeAttribute Class

Definición

Especifica los tipos conocidos que un servicio va a usar cuando se serializa o deserializa.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
Herencia
ServiceKnownTypeAttributeServiceKnownTypeAttributeServiceKnownTypeAttributeServiceKnownTypeAttribute
Atributos

Ejemplos

En el ejemplo siguiente se aplica el atributo ServiceKnownTypeAttribute a una interfaz donde el atributo especifica un nombre de método y un tipo declarativo.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 

Por otra parte, aplique el atributo a la interfaz especificando el tipo conocido que se vaya a incluir.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 

Comentarios

El ServiceKnownTypeAttribute está pensado para su uso al crear contratos de servicio Windows Communication Foundation (WCF) (interfaces que definen el servicio y sus métodos).The ServiceKnownTypeAttribute is intended for use when creating Windows Communication Foundation (WCF) service contracts (interfaces that define the service and its methods). Los tipos conocidos son tipos que pueden encontrarse en un gráfico de objetos cuando se produce la serialización o la deserialización.The known types are types that may be present in an object graph when serialization or deserialization occurs. Para obtener más información sobre los tipos conocidos, consulte Data Contract known Types.For more information about known types, see Data Contract Known Types.

Para usar la propiedad MethodName, cree una clase que contenga un método (o métodos) que devuelva una matriz de tipos (cada una es un tipo conocido).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). Al aplicar el atributo, defina methodName en el nombre de un método que devuelva la lista de tipos y defina declaringType en el tipo que contiene el método.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. El método debe devolver un tipo que implemente la interfaz IEnumerable<T>.The method must return a type that implements the IEnumerable<T> interface. El método también debe incluir un parámetro de tipo ICustomAttributeProvider.The method must also include a parameter of type ICustomAttributeProvider.

También puede aplicar el atributo varias veces en una interfaz, clase o método. En cada caso se especificaría un nuevo tipo conocido.You can also apply the attribute several times to an interface, class, or method, each time specifying a new known type.

Nota

Puede utilizar la palabra ServiceKnownType en el código de Microsoft Visual Basic o C# en lugar de ServiceKnownTypeAttribute, que es más larga.You can use the word ServiceKnownType in your Microsoft Visual Basic or C# code instead of the longer ServiceKnownTypeAttribute.

Constructores

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

Inicializa una nueva instancia de la clase ServiceKnownTypeAttribute y especifica el nombre de un método que devuelve los tipos conocidos.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)

Inicializa una nueva instancia de la clase ServiceKnownTypeAttribute con el nombre de un método que devuelve los tipos conocidos y el tipo que contiene el método (o métodos) que devuelve los tipos conocidos.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)

Inicializa una nueva instancia de la clase ServiceKnownTypeAttribute con el tipo conocido especificado.Initializes a new instance of the ServiceKnownTypeAttribute class with the specified known type.

Propiedades

DeclaringType DeclaringType DeclaringType DeclaringType

Obtiene el tipo que contiene los métodos que devuelven los tipos conocidos.Gets the type that contains the methods that return the known types.

MethodName MethodName MethodName MethodName

Obtiene el nombre de un método que devuelve la colección de tipos conocidos.Gets the name of a method that returns the collection of known types.

Type Type Type Type

El tipo conocido que puede estar incluido en un gráfico de objetos.The known type that can be included in an object graph.

TypeId TypeId TypeId TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Métodos

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

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.Returns a value that indicates whether this instance is equal to a specified object.

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

Devuelve el código hash de esta instancia.Returns the hash code for this instance.

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

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

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

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.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)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.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 superficial del objeto Object actual.Creates a shallow copy of the current Object.

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

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Implementaciones de interfaz explícitas

_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)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.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)

Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz.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 el número de interfaces de información de tipo que proporciona un objeto (0 ó 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)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Se aplica a

Consulte también: