
C# 12 Desarrolle aplicaciones Windows con Visual Studio 2022
- Nivel Medio a Experto
- Número de páginas 536 páginas
- Publicación abril 2025
- Nivel Medio a Experto
- Publicación abril 2025
Este libro sobre el desarrollo de aplicaciones Windows con el lenguaje C # (versión 12) y Visual Studio 2022, está dirigido a desarrolladores noveles en framework.NET. Les permite aprender los conceptos básicos del lenguaje C# e introduce conceptos más avanzados, dando una visión general de las posibilidades que ofrece el lenguaje C#, Visual Studio y el framework .NET en general. Para ilustrar los conceptos abordados de una manera práctica y coherente, el autor ha elegido un enfoque paso a paso mientras, con la construcción de una aplicación completamente funcional a lo largo del libro.
El aprendizaje comienza familiarizándose con la interfaz de Visual Studio 2022, así como con el concepto de arquitectura .NET. Luego se explican los detalles del lenguaje C #, su sintaxis y sus funcionalidades como las clases, la herencia, las interfaces, los tipos genéricos e incluso los delegados y los eventos, antes de abordar el diseño de interfaces de usuario.
El diseño de la interfaz de usuario cubre todas las fases útiles para la creación de aplicaciones Windows, tanto funcionales como ergonómicas, que van desde la creación de formularios hasta la creación de controles, pasando por la implementación de un manejador de eventos y la validación de los datos introducidos. También se incluye una introducción al diseño de aplicaciones WPF.
Así mismo, se detallan las herramientas de Visual Studio que permiten realizar pruebas y depurar las aplicaciones, presentando técnicas de manejo de errores, al igual que conceptos para monitorizar aplicaciones como el seguimiento, la interacción con registros de eventos y el uso de contadores de rendimiento.
Se detalla el uso de Entity Framework dentro de ejemplos concretos, lo que le permite comprender rápidamente cómo crear modelos de datos y usarlos para comunicarse con una base de datos, mientras aprende a usar el lenguaje de consulta LINQ para interactuar con datos en diferentes formatos (objetos, SQL o XML). También se detalla la alternativa al almacenamiento de datos de una aplicación en el sistema de archivos y el uso del concepto de serialización, proporcionando así una visión global de las posibilidades que ofrece el framework .NET en cuanto a la gestión de datos.
Además, con el fin de exponer un abanico más amplio de posibilidades que ofrece el lenguaje C # y Visual Studio, se presentan conceptos más avanzados: el uso de expresiones regulares, el desarrollo de aplicaciones multitarea y asincrónicas, la globalización y localización de una aplicación, la seguridad del código, la implementación de aplicaciones cliente/servidor, el diseño con GDI+, o así como la reflexión, son algunos de los temas introducidos.
La última parte del libro está dedicada a la creación de ensamblados y al despliegue de aplicaciones. Se detallan las herramientas y técnicas ofrecidas por Visual Studio para crear instaladores de Windows y configurar aplicaciones.
El código de la aplicación de ejemplo que se trata en el libro se puede descargar del sitio web www. https://www.ediciones-eni.com.
Prólogo
- Prólogo
Trabajar con Visual Studio 2022
- Introducción
- La interfaz de desarrollo
- 1. El editor de texto
- 2. El diseñador de vistas
- 3. El depurador integrado
- 4. El administrador de extensiones
- 5. NuGet
- 6. Ventanas personalizadas
- La creación de soluciones
- 1. Definir el punto de entrada
- 2. La diferencia entre proyectos y soluciones
- 3. Configurar el proyecto
- 4. Los proyectos compartidos
- 5. Las herramientas de refactorización
La arquitectura .NET
- Introducción
- CLR
- Las bibliotecas de clases
- Los tipos
- 1. Los tipos por valor
- 2. Los tipos por referencia
Introducción al lenguaje C#
- La sintaxis
- 1. Los identificadores
- 2. Las palabras clave
- 3. Las reglas de puntuación
- 4. Los operadores
- a. Los operadores de cálculo
- b. Los operadores de asignación
- c. Los operadores de comparación
- 5. La declaración de variables
- 6. Las instrucciones de control
- a. Las instrucciones condicionales
- b. Las instrucciones iterativas
- c. Las instrucciones de salto
- 7. Los comentarios
- 1. Declarar un espacio de nombres
- 2. La palabra clave using
- 3. La palabra clave alias
- 4. Las clases estáticas
- 5. Las directivas globales using
- 1. Los tipos numéricos
- a. Los enteros
- b. Los decimales
- a. La conversión implícita
- b. La conversión explícita
- 1. Las constantes
- 2. Las enumeraciones
La creación de tipos
- Introducción
- Los niveles de acceso
- Las estructuras
- Las clases
- 1. Los campos
- 2. Las propiedades
- 3. Los métodos
- a. La sobrecarga
- b. Los parámetros
- c. Las tuplas
- d. Los métodos parciales
- 4. Los constructores
- 5. Los destructores
- 6. Las clases y miembros estáticos
- 7. Las clases parciales
- 8. La palabra clave this
- 9. Los indexadores
- 10. Los atributos
- 11. La sobrecarga de operadores
- a. Los operadores aritméticos
- b. Los operadores de comparación
La herencia
- La herencia de clases
- 1. Implementar la herencia
- 2. Los miembros virtuales
- 3. Ocultar los miembros heredados
- 4. La palabra clave base
- 5. Las clases y miembros abstractos
- 6. Las clases y los métodos cerrados
- 7. Los constructores derivados
- 8. El polimorfismo
- Las interfaces
- 1. La implementación de interfaces
- 2. El polimorfismo de interfaz
- 3. La herencia de interfaces
Tipos genéricos
- Introducción
- La creación de tipos genéricos
- Las restricciones de tipo
- Las interfaces genéricas
- 1. La varianza en las interfaces genéricas
- a. La covarianza
- b. La contravarianza
- 1. La varianza en las interfaces genéricas
- 2. La creación de interfaces genéricasvariantes
- 3. La herencia de interfaces genéricas variantes
Delegados, eventos y expresiones lambda
- Los delegados
- 1. Los parámetros de método
- 2. Los métodos de destino múltiples
- 3. Los delegados genéricos
- 4. La compatibilidad de los delegados
- Los eventos
- Las expresiones lambda
- 1. El uso de las expresiones lambda
- 2. Los delegados genéricos
- 3. La captura de variables
- 4. Las funciones locales
Creación de formularios
- Utilizar los formularios
- 1. Añadir formularios al proyecto
- 2. Modificar el formulario de inicio
- 3. Las propiedades de los formularios
- 4. Los métodos de los formularios
- 5. Los eventos de los formularios
- Usar los controles
- 1. Los tipos de controles
- 2. Añadir controles a los formularios
- 3. Las propiedades de los controles
- 4. Los menús
- 5. Los contenedores
- 6. La usabilidad
- 7. Añadir controles al cuadro de herramientas
Implementación del administrador de eventos
- Introducción
- La creación de controladores de eventos
- 1. La mecánica de un evento
- 2. La adición dinámica de un controladorde eventos
- 3. La eliminación dinámica de un controladorde eventos
- Los controladores de eventos avanzados
- 1. Un controlador para varios eventos
- 2. Varios controladores para un evento
Validar los datos introducidos
- Introducción
- La validación a nivel de campos
- 1. Las propiedades de validación
- 2. Los eventos de validación
- a. KeyDown y KeyUp
- b. KeyPress
- c. Validating y Validated
- 1. MessageBox
- 2. ErrorProvider
Creación de controles de usuario
- Introducción
- Los controles personalizados
- La herencia de controles
- Los controles de usuario
Creación de aplicaciones UWP
- Introducción
- Principios
- Las herramientas de desarrollo
- El lenguaje XAML
- Una primera aplicación Windows UWP
- 1. Bases de un proyecto UWP
- 2. Controles y eventos
- 3. Los estilos
Depuración
- Los tipos de errores
- 1. Los errores de sintaxis
- 2. Los errores de ejecución
- 3. Los errores de lógica
- El depurador
- 1. Controlar la ejecución
- 2. Los puntos de interrupción
- a. Las condiciones de parada
- b. El número de llamadas
- c. El filtro
- d. Las acciones
- e. Ejecutar hasta aquí
- 3. Los DataTips
- 4. Los PerfTips
- 5. Los atributos Caller
- 1. La ventana Salida (Resultados)
- 2. La ventana Variables locales
- 3. La ventana Automático
- 4. La ventana Inspección
- 5. La ventana Inmediato
- 6. Las otras ventanas
Gestión de excepciones
- La clase Exception
- La creación de excepciones personalizadas
- El desencadenamiento de excepciones
- La intercepción y gestión de excepciones
Monitorización
- La monitorización de la ejecución
- 1. Las clases Debug y Trace
- 2. El listener
- a. La creación de listeners
- b. La copia de seguridad de las trazas
- 3. Los modificadores de seguimiento
- a. El funcionamiento de los modificadores de seguimiento
- b. La configuración de los modificadores deseguimiento
- 1. La interacción con los archivos de trazade eventos
- 2. La gestión de los archivos de traza de eventos
- 3. La escritura de eventos
- 1. La creación de contadores de rendimiento
- a. Desde Visual Studio
- b. Desde el código
Pruebas unitarias
- Introducción a las pruebas unitarias
- 1. La creación del proyecto
- 2. Las clases de pruebas unitarias
- La puesta en marcha de una serie de pruebas
- 1. Crear pruebas del proyecto
- 2. El desarrollo de las pruebas
Creación del modelo de datos
- Introducción
- La creación de un modelo
- La creación de entidades
- La generación de la base de datos
- La creación de entidades a partir de código (Code First)
Presentación de Entity Framework
- Introducción
- El mapeo
- 1. La capa lógica
- 2. La capa conceptual
- 3. La capa de mapeo
- Trabajar con las entidades
- 1. Las entidades
- 2. La clase DbContext
- 3. Las relaciones
- a. El concepto de tabla por tipo
- b. El concepto de tabla por jerarquía
Presentación de LINQ
- Las consultas LINQ
- 1. La sintaxis
- 2. Los métodos extendidos
- Los operadores de consultas
- 1. Filtrar
- a. Where
- b. OfType<tresult></tresult>
- c. SelectMany
- d. Skip y Take
- 1. Filtrar
- 2. Ordenar
- a. OrderBy
- b. ThenBy
- 3. Agrupar
- a. GroupBy
- b. Join
- 4. Agregar
- 5. Convertir
- 1. Particionar una consulta
- 2. Anular una consulta
LINQ to Entities
- Introducción
- Extraer datos
- 1. La extracción simple
- 2. La extracción condicional
- Añadir, modificar y eliminar datos
- 1. Añadir datos
- 2. Modificar datos
- 3. Eliminar datos
- 4. El envío de las modificaciones
LINQ to SQL
- La creación de clases LINQ to SQL
- El objeto DataContext
- 1. El método ExecuteQuery
- 2. Utilizar las transacciones
- 3. Los demás miembros de DataContext
- Ejecutar las consultas con LINQ
- 1. Las consultas sencillas
- 2. Las consultas filtradas
- 3. Los joins
- Los procedimientos almacenados
- 1. La adición de procedimientos almacenadosal modelo
- 2. La ejecución de procedimientos almacenados
LINQ to XML
- Los objetos XML
- 1. XDocument
- 2. XElement
- 3. XNamespace
- 4. XAttribute
- 5. XComment
- Ejecutar consultas con LINQ
- 1. Las consultas sencillas
- 2. Las consultas filtradas
- 3. Los joins
El sistema de archivos
- Las clases de gestión del sistema de archivos
- 1. DriveInfo
- 2. Directory y DirectoryInfo
- 3. File y FileInfo
- 4. Path
- Trabajar con el sistema de archivos
- 1. Los objetos Stream
- 2. La clase FileStream
- 3. Leer un archivo de texto
- a. Leer mediante la clase File
- b. Leer con la clase StreamReader
- 4. Escribir en un archivo de texto
- a. Escribir mediante la clase File
- b. Escribir con la clase StreamWriter
Serialización
- Introducción
- La serialización binaria
- 1. Conceptos básicos
- 2. Controlar la serialización
- a. El control por atributo
- b. El control por interfaz
- 1. Los conceptos básicos
- 2. Controlar la serialización
- 3. La serialización XML SOAP
Expresiones regulares
- Introducción
- Una primera expresión regular
- Las opciones de búsqueda
- Los caracteres de escape
- Los conjuntos
- Los grupos
- Las anclas (anchors)
- Los cuantificadores
Multi-threading
- Introducción
- La clase Thread
- 1. Crear un thread
- 2. Suspender un thread
- 3. Intercambiar datos con un thread
- 4. Bloquear un thread
- 5. Prioridad de los threads
- Funciones asíncronas
- 1. Task y Task<tresult></tresult>
- 2. async y await
- El componente BackgroundWorker
Globalización y localización
- Introducción
- La cultura
- La globalización
- La localización
Seguridad
- Introducción
- Los elementos básicos
- 1. La interfaz IPermission
- 2. La clase CodeAccessPermission
- 3. La interfaz IPrincipal
- Implementación de la seguridad
- 1. La seguridad basada en roles
- 2. La seguridad basada en permisos de acceso
- a. Seguridad obligatoria
- b. Seguridad declarativa
Para llegar más lejos
- El diseño con GDI+
- 1. La clase Graphics
- a. Las coordenadas
- b. Las formas
- 1. La clase Graphics
- 2. La estructura Color y las clases Brush y Pen
- a. La estructura Color
- b. La clase Brush
- c. La clase Pen
- d. Los argumentos de sistema
- 3. Los ejemplos
- a. La visualización de texto
- b. Redimensionar una imagen
- 1. Introducción
- 2. La implementación
- a. La capa común
- b. La aplicación servidor
- c. La aplicación cliente
- 1. La clase System.Type
- 2. Cargar un ensamblado de manera dinámica
- a. La enumeración de los tipos
- b. La instanciación de objetos
- c. El uso de los miembros
Ensamblados y configuraciones
- Introducción
- Los ensamblados privados
- Los ensamblados compartidos
- Los archivos de configuración
Despliegue
- Introducción
- Los proyectos de despliegue
- 1. XCOPY
- 2. Proyecto CAB
- 3. Proyecto de módulo de combinación
- 4. Proyecto de instalación
- El asistente de instalación
- Configuración del proyecto
- 1. Las propiedades del proyecto
- 2. Los editores de configuración
- a. Editor del sistema de archivos
- b. Editor del registro
- c. Editor de tipos de archivo
- d. Editor de la interfaz de usuario
- e. Editor de acciones personalizadas
- f. Editor de condiciones de inicio
