Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

MarshalAsAttribute (Clase)

Indica la forma de calcular las referencias de los datos entre el código administrado y el código no administrado.

System.Object
  System.Attribute
    System.Runtime.InteropServices.MarshalAsAttribute

Espacio de nombres:  System.Runtime.InteropServices
Ensamblado:  mscorlib (en mscorlib.dll)

[ComVisibleAttribute(true)]
[AttributeUsageAttribute(AttributeTargets.Field|AttributeTargets.Parameter|AttributeTargets.ReturnValue, Inherited = false)]
public sealed class MarshalAsAttribute : Attribute

El tipo MarshalAsAttribute expone los siguientes miembros.

  NombreDescripción
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsMarshalAsAttribute(Int16)Inicializa una nueva instancia de la clase MarshalAsAttribute con el valor de UnmanagedType especificado.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsMarshalAsAttribute(UnmanagedType)Inicializa una nueva instancia de la clase MarshalAsAttribute con el miembro de enumeración UnmanagedType especificado.
Arriba

  NombreDescripción
Propiedad públicaTypeIdCuando se implementa en una clase derivada, obtiene un identificador único para este Attribute. (Se hereda de Attribute).
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsValueObtiene el valor de UnmanagedType a partir del cual se van a calcular las referencias de los datos.
Arriba

  NombreDescripción
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsEqualsInfraestructura. Devuelve un valor que indica si esta instancia equivale al objeto especificado. (Se hereda de Attribute).
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetHashCodeDevuelve el código hash de esta instancia. (Se hereda de Attribute).
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método públicoIsDefaultAttributeCuando se invalida en una clase derivada, indica si el valor de esta instancia es el valor predeterminado para la clase derivada. (Se hereda de Attribute).
Método públicoCompatible con XNA FrameworkMatch Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual al objeto especificado. (Se hereda de Attribute).
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Arriba

  NombreDescripción
Campo públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsArraySubTypeEspecifica el tipo de elemento del campo UnmanagedType.LPArray o del campo UnmanagedType.ByValArray no administrado.
Campo públicoCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsIidParameterIndexEspecifica el índice de parámetro del atributo no administrado iid_is utilizado por COM.
Campo públicoCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsMarshalCookieProporciona información adicional a un contador de referencias personalizado.
Campo públicoCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsMarshalTypeEspecifica el nombre completo de un contador de referencias personalizado.
Campo públicoCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsMarshalTypeRefImplementa MarshalAsAttribute.MarshalType como un tipo.
Campo públicoCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsSafeArraySubTypeIndica el tipo de elemento de UnmanagedType.SafeArray.
Campo públicoCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsSafeArrayUserDefinedSubTypeIndica el tipo de elemento definido por el usuario de UnmanagedType.SafeArray.
Campo públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsSizeConstIndica el número de elementos de la matriz de longitud fija o el número de caracteres (no bytes) de una cadena que se van a importar.
Campo públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsSizeParamIndexIndica el parámetro de base cero que contiene el recuento de elementos de matriz, similar a size_is en COM.
Arriba

  NombreDescripción
Implementación explícita de interfacesMétodo privado_Attribute.GetIDsOfNamesAsigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío. (Se hereda de Attribute).
Implementación explícita de interfacesMétodo privado_Attribute.GetTypeInfoObtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz. (Se hereda de Attribute).
Implementación explícita de interfacesMétodo privado_Attribute.GetTypeInfoCount

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

(Se hereda de Attribute).
Implementación explícita de interfacesMétodo privado_Attribute.InvokeProporciona acceso a las propiedades y los métodos expuestos por un objeto. (Se hereda de Attribute).
Arriba

Este atributo se puede aplicar a parámetros, campos o valores devueltos.

Este atributo es opcional ya que cada tipo de datos tiene un comportamiento predeterminado para el cálculo de referencias. Este atributo solamente es necesario cuando las referencias de un determinado tipo pueden calcularse para varios tipos. Por ejemplo, las referencias de una cadena al código no administrado pueden calcularse como LPStr, LPWStr, LPTStr o BStr. De forma predeterminada, Common Language Runtime calcula las referencias de un parámetro de cadena como BStr para los métodos COM. El atributo MarshalAsAttribute puede aplicarse a un campo o a un parámetro individual para hacer que las referencias de una cadena determinada se calculen como LPStr en lugar de BStr. Tlbexp.exe (Exportador de la biblioteca de tipos) pasa las preferencias del cálculo de referencias a Common Language Runtime.

Algunos parámetros y valores devueltos tienen un comportamiento predeterminado distinto en lo que se refiere al cálculo de referencias si se utilizan con interoperabilidad COM o con invocación de plataforma. De forma predeterminada, el motor en tiempo de ejecución calcula las referencias de un parámetro de cadena (y los campos de un tipo de valor) como LPStr para un método o función de invocación de plataforma. Para obtener información adicional, vea Comportamiento del cálculo de referencias predeterminado.

En la mayoría de los casos, el atributo identifica simplemente el formato de los datos no administrados utilizando la enumeración UnmanagedType, tal y como se muestra en la siguiente firma de C#:

void
    MyMethod([MarshalAs(LPStr)] String s);

Algunos miembros de enumeración UnmanagedType requieren más información. Por ejemplo, se necesita más información cuando UnmanagedType es LPArray. Para obtener una descripción completa de la forma de utilizar este atributo con matrices, vea Cálculo de referencias predeterminado para matrices.

TlbImp.exe (Importador de la biblioteca de tipos) también se aplica este atributo a parámetros, campos y valores devueltos para indicar que el tipo de datos de la biblioteca de tipos de entrada no es el tipo predeterminado del tipo de datos administrados correspondiente. Tlbimp.exe siempre aplica MarshalAsAttribute a los tipos String y Object por cuestiones de claridad, independientemente del tipo especificado en la biblioteca de tipos de entrada.

NotaNota

MarshalAsAttribute no admite el cálculo de referencias de tipos genéricos.

En los siguientes ejemplos se muestra la ubicación de MarshalAsAttribute en el código fuente administrado, tal y como se aplica a parámetros, campos y valores devueltos.


using System;
using System.Text;
using System.Runtime.InteropServices;


class Program
{

//Applied to a parameter.
  public void M1([MarshalAs(UnmanagedType.LPWStr)]String msg) {}


//Applied to a field within a class.
  class MsgText {
                [MarshalAs(UnmanagedType.LPWStr)]
                public String msg = "Hello World";
                }

//Applied to a return value.
[return: MarshalAs(UnmanagedType.LPWStr)]
    public String GetMessage()
    {
        return "Hello World";
    }


static void Main(string[] args)
    {  }
}


En el ejemplo de Visual Basic siguiente, se muestra cómo aplicar el atributo MarshalAsAttribute a propiedades:

Public Property Money () As <MarshalAs(UnmanagedType.Currency)> Decimal
        Get
            Return Me._money
        End Get
        Set(<MarshalAs(UnmanagedType.Currency)> ByVal value As Decimal)
            Me._money = value
        End Set
End Property
Private _money As Decimal

El código C# equivalente se muestra en el siguiente ejemplo:

public decimal Money { 
    [return: MarshalAs(UnmanagedType.Currency)]
    get {
        return this.money;
    }
    [param: MarshalAs(UnmanagedType.Currency)]
    set {
        this.money = value;
    }
}

.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros públicos static (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft