InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Tutorial C#
Introduccion a C#
Programacion con C#
Fundamentos de C#
Operadores
Instrucciones
Estrcuturas de control.
Definición de clases
Creación de objetos
Herencia y métodos virtuales
Polimorfismo
Ocultación de miembros
Miembros de tipo
Encapsulación
Espacios de nombres
Importación de espacios de nombres
Espacio de nombres distribuidos
Variables y tipos de datos
Tablas unidimensionales
Tablas multidimensionales
La clase System.Array
Cadenas de texto
Constantes
Orden de inicialización de variables
Métodos
Métodos externos
Constructores
Destructores
Propiedades
Indizadores
Redefinición de operadores
Delegados y eventos
La clase MulticastDelegate
Llamadas asíncronas
Implementación interna de los delegados
Eventos
Estructuras
Boxing y unboxing
Constructores de estructuras
Enumeraciones
Interfaces
Excepciones
Otras instrucciones
Atributos
Definición de nuevos atributos
Lectura de atributos en tiempo de ejecución
Atributos de compilación
Pseudoatributos
Código inseguro
Definición de punteros
Manipulación de punteros
Operadores relacionados con código inseguro
Fijación de variables apuntadas
Novedades de C# 2.0
Genéricos
Tipos parciales
Iteradores
Mejoras en la manipulación de delegados
Tipos anulables
Modificadores de visibilidad de bloques get y set
Clases estáticas
Referencias a espacios de nombres
Supresión temporal de avisos
Atributos condicionales
Incrustación de tablas en estructuras
Modificaciones en el compilador
También puedes ver ...
Creando cadenas de conexión ConnectionStrings en .net 3.5 o visual Studio 2008 usando SqlConnectionStringBuilder
Migración de WSE a WCF (Web Services de 2005 a 2008)
Generar archivos PDF con C#
TransactionScope - Simplificando el trabajo con transacciones.
LinQ To SQL - Un ejemplo sencillo
Cómo activar Intelisense (autocompletado) en el Web.config
Leer un campo XML de SQL Server 2005 con C#
TripleDES - Un ejemplo practico en C#
Mostrar un GridView dentro de un DataList
String.Format

Afiliados
La Web del programador
MundoProgramacion


 

Tipos parciales

    C# 2.0 da la posibilidad de distribuir las definiciones de los tipos en múltiples ficheros tales que si al compilar se pasan todos juntos al compilador, éste automáticamente los fusionará en memoria y generará el MSIL correspondiente a su unión. A estos tipos se les conoce como tipos parciales y pueden ser definiciones tanto de clases como de estructuras e interfaces, pero no de enumeraciones o delegados ya que estas suelen ser definiciones tan sencillas que dividirlas resultaría muy poco o nada útil.

    Los tipos parciales facilitan separar los códigos obtenidos automáticamente mediante generadores de código (como VS.NET 2005) de las modificaciones se les realicen a mano tras su generación, pues permiten regenerarlos en cualquier momento sin que con ello se pierdan dichos cambios. Además, también son útiles para agilizar el desarrollo y mantenimiento de las tipos de datos, pues permiten que varias personas puedan estar trabajando simultáneamente en diferentes secciones de un mismo tipo de dato.

    Para definir un tipo parcial simplemente con basta declararlo varias veces en el mismo o en diferentes ficheros, añadiéndoles un nuevo modificador partial y manteniendo siempre el mismo nombre completo, parámetros tipo, modificadores de visibilidad y clase base. Las restricciones de los parámetros tipos no tienen porqué aparecer en todas las partes, pero si lo hace deben ser siempre las mismas. Por ejemplo, en un fichero clientes.cs se podría tener:


 interface I1
 {
  void F();
 }
 [MiAtributo1] [MiAtributo2("Test1")] 
 public partial class Clientes
 {
  public int X;
 }

    Y en otro fichero llamado clientes-ampliación.cs:


 public partial class Clientes: I1
 {}
 interface I2
 {
  void G();
 }
  [MiAtributo2("Test2")] 
  public partial class Clientes: I2
  {
  void I1.F()
   {}
  public void G()
   {}
  }

    Si al compilar se especifican ambas ambos ficheros simultáneamente, como en:


 csc /t:library clientes.cs clientes-ampliación.cs

    El compilador considerará que la definición de la clase Clientes es la siguiente:


 [MiAtributo1, MiAtributo2("Test1"), MiAtributo2("Test2")]
 public class Clientes: I1, I2
  {            
   public int X;
   void I1.F()            
   {}            
   public void G()            
   {}
  }

    Nótese que en una parte de una definición parcial se podrán referenciar identificadores (miembros, interfaces implementadas explícitamente, etc.) no declarados en ella sino en otras partes de la definición, puesto que mientras al compilar se le pasen al compilador las partes donde están definidos, la fusión producirá una clase válida. No obstante, hay que señalar que esto tiene pequeñas algunas limitaciones y no es aplicable a:

  • Modificador unsafe: Por seguridad, aplicarlo a la definición de una parte de un tipo no implicará que se considere aplicado al resto y puedan utilizarse en ellas punteros, sino que deberá de aplicarse por separado a cada parte en la que se vaya a hacer uso de características inseguras.
  • Directiva using: En cada parte de una definición parcial se puede utilizar diferentes directivas using que importen diferentes espacios de nombres y definan diferentes alias. Al analizar cada parte, el compilador tan sólo interpretará las directivas using especificadas en ella, admitiéndose incluso que en varias partes se definan alias con el mismo nombre para clases o espacios de nombres diferentes.

    El uso de tipos parciales no obstante introduce el problema de que el mantenimiento de código particionados puede ser más complicado al estar distribuida su implementación a lo largo de múltiples ficheros. Sin embargo, herramientas como la Vista de Clases de VS.NET 2005 solucionan esto proporcionando una vista unificada de la estructura de estos tipos con el resultado de la fusión de todas sus partes.


Inicio | Tutorial C# GenéricosTutorial C#Iteradores Versión para imprimir Foros de consulta


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial C# GenéricosTutorial C#Iteradores Versión para imprimir

Tipos parciales
Autor: José Antonio González Seco
Visitas: 4135 Fecha de publicación: 11/12/2006
José Antonio es experto en tecnologias Microsoft. Imparte cursos y conferencias en congresos sobre C# y .NET en Universidades de toda España (Sevilla, Barcelona, San Sebastián, Valencia, Oviedo, etc.) en representación de grandes empresas como Microsoft.




Visitas: 308 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|ADO.NET
27/09/2008 Navegando ....
Visitas: 85 | Comentarios: 0 | Archivo: Articulos
Categorias: Humor
Visitas: 206 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|WCF
Visitas: 935 | Comentarios: 0 | Archivo: Articulos
Categorias: C#
Visitas: 208 | Comentarios: 0 | Archivo: Articulos
Categorias: JavaScript|ASP.NET
Visitas: 675 | Comentarios: 0 | Archivo: Articulos
Categorias: Windows XP|Linux|Windows Vista
Visitas: 455 | Comentarios: 0 | Archivo: Articulos
Categorias: Linux|BSD
Visitas: 235 | Comentarios: 0 | Archivo: Articulos
Categorias: Programación|Actualidad
18/08/2008 SQL Server 2008
Visitas: 1135 | Comentarios: 1 | Archivo: Articulos
Categorias: Transact-SQL
Visitas: 789 | Comentarios: 0 | Archivo: Articulos
Categorias: C#|ADO.NET|LinQ

Útimos temas recibidos en los foros ...
hacer el nombre de una tabla variable por leicolei ... [SQL Server] 1 10/10/2008
Mostar nombre en una sesion de usuario por jhors ... [ASP.NET] 1 10/10/2008
Analista por Rolando ... [SQL Server] 0 10/10/2008
SQL dinámico en TRIGGERS por Alastor ... [ORACLE] 2 03/10/2008
Crystal Reports 8.5 por selvinalberto ... [Visual Basic 6.0] 0 10/10/2008
Agregar Columnas a un datagridview por Tony ... [Visual Basic .NET] 3 20/11/2007
Problema cargando un pl/sql Embebido en Pro*C por ejrivas ... [ORACLE] 0 10/10/2008
ayuda por yo ... [C#] 1 09/10/2008
Verificar conexion a internet por giraldo ... [Visual Basic .NET] 3 11/12/2006
Como pasar un array de textboxes como parámetro a un Sub por Silvana ... [Visual Basic 6.0] 1 09/10/2008
Crear documento de Word desde Java. por Roberto ... [Java] 1 24/11/2007
necesito mi autogenerado por regulo ... [Visual Basic .NET] 0 09/10/2008

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
28/08/2006 Ubuntu en VmWare con VMware Tools
01/08/2006 Generar un fichero Excel con C# sin tener Excel instalado
21/02/2006 Introducción a .NET
03/10/2006 Definición de clases    forma parte de...Tutorial C#
22/10/2005 Introducción SQL    forma parte de...Tutorial SQL
03/10/2006 Operadores    forma parte de...Tutorial C#
30/11/2006 Lectura de atributos en tiempo de ejecución    forma parte de...Tutorial C#
27/02/2007 ¿Permite Windows Vista reproducir peliculas descargadas o "Piratas"? SI, si lo permite
08/01/2008 Teclas Rápidas en Vista
16/08/2007 Borrar datos en Transact SQL    forma parte de...Tutorial de Transact SQL

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]