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

Interfaz ITypedList

 

Publicado: octubre de 2016

Proporciona funcionalidad para descubrir el esquema de una lista enlazable, donde las propiedades disponibles para el enlace difieren de las propiedades públicas del objeto que se va a enlazar.

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

public interface ITypedList

NombreDescripción
System_CAPS_pubmethodGetItemProperties(PropertyDescriptor[])

Devuelve el PropertyDescriptorCollection que representa las propiedades de cada elemento utilizado para enlazar datos.

System_CAPS_pubmethodGetListName(PropertyDescriptor[])

Devuelve el nombre de la lista.

Utilizar esta interfaz, por ejemplo, si se usa un DataView objeto que representa un customer tabla, que desea enlazar a las propiedades el customer de objeto que el DataView representa, no las propiedades de la DataView.

Esta interfaz no es necesaria para la compatibilidad en tiempo de diseño de una lista enlazable.

Enlace a datos puede producirse en tiempo de ejecución o en un diseñador, pero existen reglas para ambos. En tiempo de ejecución, puede enlazar a datos en cualquiera de las siguientes acciones:

  • Array

  • Implementador de IList, siempre y cuando tenga fuertemente tipado Item propiedad (es decir, el Type es cualquier cosa menos Object). Puede hacerlo realizando la implementación predeterminada de Item privada. Si desea crear un IList que sigue las reglas de una colección fuertemente tipada, debe derivar de CollectionBase.

  • Implementador de ITypedList.

En un diseñador, se puede inicializar el enlace a Component objetos siguiendo las mismas reglas.

Para obtener más información sobre cómo enlazar a un origen de datos, consulte la System.Windows.Forms.Binding clase.

En el ejemplo de código siguiente se muestra cómo implementar el ITypedList interfaz. Un tipo genérico denominado SortableBindingList se deriva de la BindingList<T> clase e implementa el ITypedList interfaz. Para obtener una lista de código completo, vea Cómo: Implementar la interfaz ITypedList.

using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Windows.Forms;
using System.Collections;
using System.Reflection;

namespace ITypedListCS
{
    [Serializable()]
    public class SortableBindingList<T> : BindingList<T>, ITypedList
    {
        [NonSerialized()]
        private PropertyDescriptorCollection properties;

        public SortableBindingList() : base()
        {
            // Get the 'shape' of the list. 
            // Only get the public properties marked with Browsable = true.
            PropertyDescriptorCollection pdc = TypeDescriptor.GetProperties(
                typeof(T), 
                new Attribute[] { new BrowsableAttribute(true) });

            // Sort the properties.
            properties = pdc.Sort();
        }

        #region ITypedList Implementation

        public PropertyDescriptorCollection GetItemProperties(PropertyDescriptor[] listAccessors)
        {
            PropertyDescriptorCollection pdc;

            if (listAccessors!=null && listAccessors.Length>0)
            {
                // Return child list shape.
                pdc = ListBindingHelper.GetListItemProperties(listAccessors[0].PropertyType);
            }
            else
            {
                // Return properties in sort order.
                pdc = properties;
            }

            return pdc;
        }

        // This method is only used in the design-time framework 
        // and by the obsolete DataGrid control.
        public string GetListName(PropertyDescriptor[] listAccessors)
        {   
            return typeof(T).Name;
        }

        #endregion
    }
}

.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar: