Exportar (0) Imprimir
Expandir todo

TypeConverter (Clase)

Actualización: noviembre 2007

Proporciona un modo unificado para convertir los tipos de valores en otros tipos, así como para obtener acceso a valores estándar y a subpropiedades.

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

[ComVisibleAttribute(true)]
[HostProtectionAttribute(SecurityAction.LinkDemand, SharedState = true)]
public class TypeConverter
/** @attribute ComVisibleAttribute(true) */
/** @attribute HostProtectionAttribute(SecurityAction.LinkDemand, SharedState = true) */
public class TypeConverter
public class TypeConverter

x1z9x06x.alert_note(es-es,VS.90).gifNota:

El atributo HostProtectionAttribute aplicado a este tipo o miembro tiene el siguiente valor de la propiedad Resources: SharedState. El atributo HostProtectionAttribute no afecta a las aplicaciones de escritorio (que normalmente se inician haciendo doble clic en un icono, escribiendo un comando o introduciendo una dirección URL en el explorador). Para obtener más información, vea la clase HostProtectionAttribute o Programación de SQL Server y atributos de protección del host.

El tipo de convertidor más común es el que convierte a y desde una representación de texto. El convertidor de tipos de una clase está enlazado a la clase con TypeConverterAttribute. A menos que se reemplace este atributo, todas las clases que heredan de esta clase utilizan el mismo convertidor de tipos que la clase base.

x1z9x06x.alert_note(es-es,VS.90).gifNota:

Nunca obtenga acceso directo a un convertidor de tipos. En lugar de ello, obtenga acceso al convertidor apropiado utilizando TypeDescriptor. Para obtener más información, vea los ejemplos de código proporcionados.

x1z9x06x.alert_note(es-es,VS.90).gifNota:

En Windows Presentation Foundation (WPF), el cargador del XAML busca directamente TypeConverterAttribute, en lugar de pasar por TypeDescriptor.

Notas para los herederos:

Herede de TypeConverter para implementar sus propios requisitos de conversión. Cuando herede de esta clase, podrá reemplazar los siguientes métodos:

x1z9x06x.alert_note(es-es,VS.90).gifNota:

Aunque el tipo derivado esté marcado como internal o private, se puede crear una instancia del mismo con la clase TypeDescriptor. No escriba código inseguro pensando que el llamador es de confianza. Por el contrario, suponga que los llamadores pueden crear instancias de su tipo si la confianza es parcial.

Para obtener más información sobre los convertidores de tipos, vea Cómo: Implementar un convertidor de tipos o Conversión de tipos generalizada.

En el ejemplo de código siguiente se muestra cómo se crea una instancia de un convertidor de tipos y se enlaza a una clase. La clase que implementa el convertidor, MyClassConverter, debe heredarse de la clase TypeConverter.

[TypeConverter(typeof(MyClassConverter))]
 public class MyClass {
    // Insert code here.
}


/** @attribute TypeConverter(MyClassConverter.class)
 */
public class MyClass
{
    // Insert code here.
} //MyClass 


Cuando hay una propiedad que tiene una enumeración, compruebe si es válido un valor de enumeración antes de establecer la propiedad. En el ejemplo de código siguiente es necesario que se haya declarado una enumeración denominada MyPropertyEnum.

public MyPropertyEnum MyProperty {
    set {
       // Checks to see if the value passed is valid.
       if (!TypeDescriptor.GetConverter(typeof(MyPropertyEnum)).IsValid(value)) {
          throw new ArgumentException();
       }
       // The value is valid. Insert code to set the property.
    }
 }


/** @property 
 */
public void set_MyProperty(MyPropertyEnum value)
{
    // Checks to see if the value passed is valid.
    if (!(TypeDescriptor.GetConverter(MyPropertyEnum.class.ToType()).
        IsValid(value))) {
        throw new ArgumentException();
    }
    // The value is valid. Insert code to set the property.
} //set_MyProperty


El convertidor de tipos suele utilizarse también para convertir un objeto a una cadena. En el ejemplo de código siguiente se imprime el nombre de la estructura Color almacenada en la variable c.

Color c = Color.Red;
    Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c));


Color c = Color.get_Red();
Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c));


Se puede utilizar asimismo un convertidor de tipos para convertir un valor desde su nombre, tal como se muestra en el siguiente ejemplo de código.

Color c = (Color)TypeDescriptor.GetConverter(typeof(Color)).ConvertFromString("Red");


Color c = (Color)(TypeDescriptor.GetConverter(Color.class.ToType()).
    ConvertFromString("Red"));


En el ejemplo de código siguiente puede utilizar un convertidor de tipos para imprimir el conjunto de valores estándar compatibles con el objeto.

foreach(Color c in TypeDescriptor.GetConverter(typeof(Color)).GetStandardValues()) {
    Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c));
 }


IEnumerator e = TypeDescriptor.GetConverter(Color.class.ToType()).
    GetStandardValues().GetEnumerator();
while (e.MoveNext()) {
    Color c = (Color)e.get_Current();
    Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c));
}


System.Object
  System.ComponentModel.TypeConverter
    Microsoft.VisualBasic.ApplicationServices.BuiltInRoleConverter
    System.ComponentModel.BaseNumberConverter
    System.ComponentModel.BooleanConverter
    System.ComponentModel.CharConverter
    System.ComponentModel.CollectionConverter
    System.ComponentModel.CultureInfoConverter
    System.ComponentModel.DateTimeConverter
    System.ComponentModel.EnumConverter
    System.ComponentModel.ExpandableObjectConverter
    System.ComponentModel.GuidConverter
    System.ComponentModel.MultilineStringConverter
    System.ComponentModel.NullableConverter
    System.ComponentModel.ReferenceConverter
    System.ComponentModel.StringConverter
    System.ComponentModel.TimeSpanConverter
    System.ComponentModel.TypeListConverter
    System.Configuration.ConfigurationConverterBase
    System.Diagnostics.Design.LogConverter
    System.Drawing.ColorConverter
    System.Drawing.FontConverter
    System.Drawing.FontConverter.FontNameConverter
    System.Drawing.ImageConverter
    System.Drawing.ImageFormatConverter
    System.Drawing.PointConverter
    System.Drawing.RectangleConverter
    System.Drawing.SizeConverter
    System.Drawing.SizeFConverter
    System.Resources.ResXFileRef.Converter
    System.UriTypeConverter
    System.Web.Configuration.LowerCaseStringConverter
    System.Web.UI.Design.DataBindingCollectionConverter
    System.Web.UI.Design.DataColumnSelectionConverter
    System.Web.UI.Design.DataFieldConverter
    System.Web.UI.Design.DataMemberConverter
    System.Web.UI.Design.DataSourceConverter
    System.Web.UI.Design.DataSourceViewSchemaConverter
    System.Web.UI.Design.ExpressionsCollectionConverter
    System.Web.UI.Design.MobileControls.Converters.DataFieldConverter
    System.Web.UI.Design.MobileControls.Converters.DataMemberConverter
    System.Web.UI.Design.SkinIDTypeConverter
    System.Web.UI.Design.WebControls.DataSourceIDConverter
    System.Web.UI.WebControls.FontNamesConverter
    System.Web.UI.WebControls.FontUnitConverter
    System.Web.UI.WebControls.StringArrayConverter
    System.Web.UI.WebControls.UnitConverter
    System.Windows.CornerRadiusConverter
    System.Windows.CultureInfoIetfLanguageTagConverter
    System.Windows.DialogResultConverter
    System.Windows.DurationConverter
    System.Windows.DynamicResourceExtensionConverter
    System.Windows.ExpressionConverter
    System.Windows.FigureLengthConverter
    System.Windows.FontSizeConverter
    System.Windows.FontStretchConverter
    System.Windows.FontStyleConverter
    System.Windows.FontWeightConverter
    System.Windows.Forms.AxHost.StateConverter
    System.Windows.Forms.CursorConverter
    System.Windows.Forms.DataGridPreferredColumnWidthTypeConverter
    System.Windows.Forms.DataGridViewCellStyleConverter
    System.Windows.Forms.KeysConverter
    System.Windows.Forms.Layout.TableLayoutSettingsTypeConverter
    System.Windows.Forms.LinkArea.LinkAreaConverter
    System.Windows.Forms.LinkConverter
    System.Windows.Forms.ListBindingConverter
    System.Windows.Forms.OpacityConverter
    System.Windows.Forms.PaddingConverter
    System.Windows.Forms.ScrollableControl.DockPaddingEdgesConverter
    System.Windows.Forms.SelectionRangeConverter
    System.Windows.Forms.TreeNodeConverter
    System.Windows.GridLengthConverter
    System.Windows.Input.CommandConverter
    System.Windows.Input.CursorConverter
    System.Windows.Input.InputScopeConverter
    System.Windows.Input.InputScopeNameConverter
    System.Windows.Input.KeyConverter
    System.Windows.Input.KeyGestureConverter
    System.Windows.Input.ModifierKeysConverter
    System.Windows.Input.MouseActionConverter
    System.Windows.Input.MouseGestureConverter
    System.Windows.Int32RectConverter
    System.Windows.KeySplineConverter
    System.Windows.KeyTimeConverter
    System.Windows.LengthConverter
    System.Windows.Markup.DependencyPropertyConverter
    System.Windows.Markup.RoutedEventConverter
    System.Windows.Markup.TemplateKeyConverter
    System.Windows.Markup.XmlLanguageConverter
    System.Windows.Media.Animation.RepeatBehaviorConverter
    System.Windows.Media.BrushConverter
    System.Windows.Media.ColorConverter
    System.Windows.Media.Converters.BaseIListConverter
    System.Windows.Media.DoubleCollectionConverter
    System.Windows.Media.FontFamilyConverter
    System.Windows.Media.GeometryConverter
    System.Windows.Media.ImageSourceConverter
    System.Windows.Media.Int32CollectionConverter
    System.Windows.Media.MatrixConverter
    System.Windows.Media.Media3D.Matrix3DConverter
    System.Windows.Media.Media3D.Point3DCollectionConverter
    System.Windows.Media.Media3D.Point3DConverter
    System.Windows.Media.Media3D.Point4DConverter
    System.Windows.Media.Media3D.QuaternionConverter
    System.Windows.Media.Media3D.Rect3DConverter
    System.Windows.Media.Media3D.Size3DConverter
    System.Windows.Media.Media3D.Vector3DCollectionConverter
    System.Windows.Media.Media3D.Vector3DConverter
    System.Windows.Media.PathFigureCollectionConverter
    System.Windows.Media.PixelFormatConverter
    System.Windows.Media.PointCollectionConverter
    System.Windows.Media.TransformConverter
    System.Windows.Media.VectorCollectionConverter
    System.Windows.PointConverter
    System.Windows.PropertyPathConverter
    System.Windows.RectConverter
    System.Windows.SizeConverter
    System.Windows.StrokeCollectionConverter
    System.Windows.TemplateBindingExpressionConverter
    System.Windows.TemplateBindingExtensionConverter
    System.Windows.TextDecorationCollectionConverter
    System.Windows.ThicknessConverter
    System.Windows.VectorConverter
    System.Workflow.ComponentModel.Design.ActivityBindTypeConverter

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

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC, Xbox 360

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

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

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0

XNA Framework

Compatible con: 2.0, 1.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft