Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase ServiceKnownTypeAttribute

 

Publicado: octubre de 2016

Especifica los tipos conocidos que un servicio va a usar cuando se serializa o deserializa.

Espacio de nombres:   System.ServiceModel
Ensamblado:  System.ServiceModel (en System.ServiceModel.dll)

System.Object
  System.Attribute
    System.ServiceModel.ServiceKnownTypeAttribute

[AttributeUsageAttribute(AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Interface, 
	Inherited = true, AllowMultiple = true)]
public sealed class ServiceKnownTypeAttribute : Attribute

NombreDescripción
System_CAPS_pubmethodServiceKnownTypeAttribute(String)

Inicializa una nueva instancia de la clase ServiceKnownTypeAttribute y especifica el nombre de un método que devuelve los tipos conocidos.

System_CAPS_pubmethodServiceKnownTypeAttribute(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.

System_CAPS_pubmethodServiceKnownTypeAttribute(Type)

Inicializa una nueva instancia de la clase ServiceKnownTypeAttribute con el tipo conocido especificado.

NombreDescripción
System_CAPS_pubpropertyDeclaringType

Obtiene el tipo que contiene los métodos que devuelven los tipos conocidos.

System_CAPS_pubpropertyMethodName

Obtiene el nombre de un método que devuelve la colección de tipos conocidos.

System_CAPS_pubpropertyType

El tipo conocido que puede estar incluido en un gráfico de objetos.

System_CAPS_pubpropertyTypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.(Heredado de Attribute).

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Esta API admite la infraestructura producto y no está diseñada para usarse directamente desde el código. Devuelve un valor que indica si esta instancia equivale al objeto especificado. (Heredado de Attribute).

System_CAPS_pubmethodGetHashCode()

Devuelve el código hash de esta instancia.(Heredado de Attribute).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodIsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.(Heredado de Attribute).

System_CAPS_pubmethodMatch(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual al objeto especificado. (Heredado de Attribute).

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

NombreDescripción
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.(Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información del tipo de un objeto, que puede utilizarse para obtener la información del tipo de una interfaz. (Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de tipo de información que suministra un objeto (0 ó 1)

(Heredado de Attribute).

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

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.(Heredado de Attribute).

ServiceKnownTypeAttribute está diseñado para que se use cuando se creen contratos de servicio Windows Communication Foundation (WCF) (interfaces que definen el servicio y sus métodos). Los tipos conocidos son tipos que se pueden encontrar en un gráfico de objetos cuando se produce la serialización o la deserialización. Para obtener más información sobre los tipos conocidos, consulte Tipos conocidos de contratos de datos.

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). 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. El método debe devolver un tipo que implemente la interfaz IEnumerable<T>. El método también debe incluir un parámetro de tipo 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.

System_CAPS_noteNota

Puede utilizar la palabra ServiceKnownType en el código de Microsoft Visual Basic o C# en lugar de ServiceKnownTypeAttribute, que es más larga.

En el ejemplo siguiente se aplica el atributo ServiceKnownTypeAttribute a una interfaz donde el atributo especifica un nombre de método y un tipo de declaración.

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

Por otra parte, aplique el atributo a la interfaz especificando el tipo conocido que se vaya a incluir.

// 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();
}

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 3.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: