Modificando los Operadores de C# .NET 🤘

Поділитися
Вставка
  • Опубліковано 16 гру 2024

КОМЕНТАРІ • 62

  • @hdeleonnet
    @hdeleonnet  Рік тому +6

    Mis cursos de Programación: hdeleon.net/cursos-premium/

  • @Harbinger835
    @Harbinger835 Рік тому +15

    Si se decide usar un truco asi es muy importante tener tu codigo muy bien documentado y estructurado, porque resulta poco intuitivo para tus colabradores, sobretodo para ti mismo cuando revisites el codigo, pero un trucazo sin duda!

  • @eugenioriviello6562
    @eugenioriviello6562 Рік тому

    Muy bueno, esto si que no lo conocia, y mientras veia el video pensaba cuantos dolores de cabeza me hubiese ahorra, ahora solo queda implementarlo cuando llegue el caso

  • @mercetoki
    @mercetoki Рік тому

    Excelente, yo he usado sobre carga de operadores para cambiar el comportamiento de los operadores nativos

  • @juanjosevediamolina5241
    @juanjosevediamolina5241 Рік тому +1

    No puede ser mas borracho Hector...😁, Muy interesante el auto mapper nativo c#

  • @DiegoSoto
    @DiegoSoto Рік тому +3

    Muchas gracias! No conocía la sobrecarga de operadores en C# ni en ningún otro lenguaje! 😃👏👏👏

  • @rodrigo3087
    @rodrigo3087 Рік тому

    fuaaa sos un groso, gracias por compartir tus conocimientos. En la facu nos explicaron sobrecarga de operadores con C++ pero no le veia un uso, ahora si.
    Saludos desde Argentina.

  • @arielcani85
    @arielcani85 Рік тому +1

    ¡Qué buena idea! Es un buen uso práctico a la sobrecarga de operadores. En proyectos grandes y profesionales he usado Automapper, pero en proyectos chicos suelo implementar métodos estáticos para no depender de otra librería.
    El único problema que le encuentro a esta solución es de acoplamiento en un proyecto multicapa, cuando la clase de origen tiene que conocer a la clase destino. Ej Beer > BeerDTO o BeerView.
    La solución sería que la clase destino sea la encargada de conocer y mapear a la clase origen.

  • @UskoKruM2010
    @UskoKruM2010 Рік тому +2

    Buena, Héctor! Arriba compra ✌✌

  • @LuisC318
    @LuisC318 Рік тому +2

    A mí me gusta usar extensions para esto, a los DTO por ejemplo les creo métodos ToModel y a los models les creo métodos ToDTO. Creo que incluso he hecho algunas cosillas genéricas con Reflection para esto, pero el resto del equipo suele opinar que es "muy complicado"

  • @jakburton1
    @jakburton1 Рік тому

    Nesecito un hdelon pero para javascript me encanta que aborde temas tan profundos en 10 min

  •  Рік тому

    Uno de esos temas en los que tengo conflictos por la legibilidad del código y porque puede generar confusión y obscuridad de código cuando no te das cuenta de si el operador está sobrecargado. Por otro lado, tener que estar sobrecargando para cada mapeo dentro de clase origen resulta engorroso (en Automapper por ejemplo puedes tener todos tus mapeos en un solo archivo, es más fácil de mantener cuando tienes cientos de mapeos). Pero es válido para cosas pequeñas o que no van a crecer exageradamente. Muy buen topic master!

  • @ArTWorK211
    @ArTWorK211 Рік тому +2

    Un muy buen tips.
    Si no me equivoco C# maneja conversión de tipo por medio de conversión implícita, la cual se define como el mismo tipo de operadores. De esta forma también nos podemos saltar el uso de un mapper.
    Ejemplo:
    public static explicit operator Profesor(Alumno alum)
    {
    return new Profesor { Name = alum.Name, Facultad = alum.Facultad, IdContrato = -1 };
    }
    //Lo mismo para alumno
    Profesor teacher = new Profesor { Name = "Jorge", Facultad = "Ingenieros", IdContrato = 10 };
    Alumno student = (Alumno)teacher;
    Profesor teacher2 = (Profesor)student;
    Saludos!

    • @mcomarch
      @mcomarch Рік тому

      Me ganaste el comentario .. Siiiiiiiiii ... eso lo uso mucho, ya cada día lo he vuelto un ammmm una practica común en mi... Ayuda mucho sobre todo si tienes no solo MUCHOS atributos, si no si estos a su vez, tienen subObjetos .. por ejemplo que Profesor y Alumno tengan Domicilio ... y adentro hay que copiar tmb el domicilio ...
      Yo hago un truco para mas rápido ... quizas sea mala práctica, no se ... pero con la ayuda de JSON Converter (ya sea Newtonsoft o en NET con System.Text.Json) ... me llega el objeto, lo Serializo (a STRING) y lo Deserealizo (a Objeto) del otro tipo de clase (a Alumno). Ésto para que si agrego un nuevo atributo en alguna parte de las clases, no tengo que ir al Convertidor Implicito a tomarlo en cuennta...
      Con NewtonSoft quedaría algo como así: (cambiar a System.Text.Json en caso de Net 5 o posterior)
      // Convertir de Alumno a Profesor => profe = alumno;
      public static explicit operator Profesor(Alumno alum) {
      return Newtonsoft.Json.JsonConvert.DeserializeObject(Newtonsoft.Json.JsonConvert.SerializeObject(alum));
      }
      // Convertir de Profesor a Alumno => alumno = profe;
      public static explicit operator Alumno(Profesor profe) {
      return Newtonsoft.Json.JsonConvert.DeserializeObject(Newtonsoft.Json.JsonConvert.SerializeObject(profe));
      }

    • @mcomarch
      @mcomarch Рік тому

      Aunque por otro lado... SOLO APLICA si ... los atributos son públicos y se llaman igual ... Si algun campo se llama distinto, ya valió "mi proceso" ... por que ... si el objeto Profesor tiene campo SALARIO y el campo alumno tiene el campo DONACION .. alli si el parsear con JSON no funcionará .. toca hacer manual ese paso (o esos si son varios) ... pero bueno, quizas a alguien le ayude un poco lo que propongo jejejejeje

  • @Developerlito
    @Developerlito Рік тому

    No lo sabia cabezón gracias!

  • @cesarsoftnica5126
    @cesarsoftnica5126 Рік тому +2

    Excelente aporte 🖥 saludos hector desde Nicaragua

  • @renemachic6242
    @renemachic6242 Рік тому

    ¡Lo que necesitaba!!! Gracias Héctor.

  • @gigh2206
    @gigh2206 Рік тому

    Si aprendi algo nuevo gracias, Saludos

  • @Shagrathkampf
    @Shagrathkampf Рік тому

    Cara sou teu fã!!!
    Hail from brasil

  • @benja456ful
    @benja456ful Рік тому

    Gran consejo, gracias.

  • @curieldev5892
    @curieldev5892 Рік тому

    Aprendí algo nuevo. Gracias Hector 🤟

  • @MIKISP500
    @MIKISP500 Рік тому

    Genial 👍

  • @RamiroMoctezuma
    @RamiroMoctezuma Рік тому

    Chingonsisimo

  • @ronaldchonillo
    @ronaldchonillo Рік тому +1

    Excelente!!!

  • @eric_rov
    @eric_rov Рік тому +1

    Crack!

  • @FABLearnProgramming
    @FABLearnProgramming Рік тому +1

    Siempre se aprende con sus métodos, muchas gracias

  • @Miguel140370
    @Miguel140370 Рік тому

    Excelente aportación amigo

  • @alfonsorodriguez7324
    @alfonsorodriguez7324 Рік тому

    Otro gran video sobre programación.

  • @acmesoft
    @acmesoft Рік тому

    Excelente como siempre

  • @humbertomillan2130
    @humbertomillan2130 Рік тому +1

    No se que es mas brillante, Hector o su cabello

  • @guillermo.s4886
    @guillermo.s4886 Рік тому

    excelente explicación

  • @juanignaciolasa2385
    @juanignaciolasa2385 Рік тому

    Muy bueno

  • @blackdeath3074
    @blackdeath3074 Рік тому

    Muy buen contenido Hector 🤘

  • @nagaqva6991
    @nagaqva6991 Рік тому

    excelentes consejos como siempre, muchas gracias

  • @mrcheli07
    @mrcheli07 Рік тому

    Gran video. Disculpa que beneficios o diferencias tendría esta forma de trabajar contra por ejemplo una función que reciba el objeto como parámetro y haga esas mismas asignaciones?

  • @luisfernandez6124
    @luisfernandez6124 Рік тому +5

    Hola!! saludos desde Chile. Llevo años programando en C# y no lo conocía :S supongo que se dejó de usar debido a que puedes crear métodos dentro de la clase que hagan ese mapeo. ¿Cual será mejor usar?? (en mi caso particular los mapeos los hago en otra clase aparte y los paso por sobrecarga. example Product toProduct (this beer));

  • @isaachernandezserrano9646
    @isaachernandezserrano9646 Рік тому

    Chulada

  • @emmanuelgarciavaldez2697
    @emmanuelgarciavaldez2697 Рік тому

    Execelente

  • @geronimolopez4926
    @geronimolopez4926 Рік тому +1

    Excelente Video Hector!!. Tengo una pregunta, no se podría reemplazar el primer argumento de los params que recibe la sobrecarga del operador por un this? (asumiendo el primer parámetro es el mismo objeto instanciado). Muchas gracias y un abrazo grande!!!

    • @MIKISP500
      @MIKISP500 Рік тому

      No lo he probado, pero supongo que creando una propiedad List dentro de un objeto se podría ir añadiendo ese parámetro, lo probaré...

  • @amingomezd
    @amingomezd Рік тому

    Yo estuve haciendo eso pero lo llamaba de otra manera (convertidor) no como se llama técnicamente, sobrecarga de operadores 😅

  • @BlackestCRT
    @BlackestCRT Рік тому +1

    esta rotisimo XD

  • @hectorramos5632
    @hectorramos5632 Рік тому

    Hola tocayo tengo una consulta.
    Sabes si desde un sistema de escritorio en c# se podrá comunicar con la cámara de mi celular? Quisiera proponer eso donde trabajo pero tengo la duda si es que se puede realizar o no, busque información pero no encuentro algo estable y fijo para q me deje esa comunicación.

  • @SimaDamian
    @SimaDamian Рік тому +1

    No es heavy metal! pero es dark, dark! xD

  • @stevknot1
    @stevknot1 Рік тому

    gracias

  • @r.osorio02
    @r.osorio02 Рік тому

    Muchas gracias Héctor. Desde qué versión se puede usar?

    • @hdeleonnet
      @hdeleonnet  Рік тому

      Desde hace años, no recuerdo cual, pero 10 años fácil

  • @sotlui86
    @sotlui86 Рік тому

    Amigo Héctor cómo vas, disculpa tal vez me puedes direccionar, tengo algunos curso tuyos, pero me encuentro en un dilema, cuando género el menú dinámico al momento de dar clic en una opción por detrás quiero que se genere u hash y pasar como parámetro, capturar y comparar el la session que fue almacenada. Estoy trabajando con web forms, agradezco tu apoyo.

  • @fjr519
    @fjr519 Рік тому

    Como migro un proyecto net core 3.1 al 7?

  • @stalin2789
    @stalin2789 Рік тому +1

    Buen dato perturbador (Y)

  • @KaliSurfYoMero
    @KaliSurfYoMero Рік тому

    Yeahh esta interesante... pero en una lista de objetos ¿se tendría que meter en un ciclo para ir haciendo la "traducción" uno por uno?

    • @hdeleonnet
      @hdeleonnet  Рік тому +1

      aquí: ua-cam.com/video/xoYiBLggBq8/v-deo.html

  • @BeautifulSadness2008
    @BeautifulSadness2008 Рік тому

    Sobrecarga de operadores

  • @jhonisystems
    @jhonisystems Рік тому

    Hola que tal, se que esto no por parte de este video pero ya no se donde buscar. Lo que pasa es que al momento de programar, en el archivo cshtml, al momento de abrir cualquier etiqueta se me duplican los caracteres ejemplo: "

  • @naicssss9968
    @naicssss9968 Рік тому

    una pregunta... .net core es relativamente obsoleto comparado con .net framework? o simplemente son distintas formas de hacer lo mismo?

    • @JeanCarlos-jk1er
      @JeanCarlos-jk1er Рік тому

      .NET core es mas actualizado

    • @rbarriae
      @rbarriae Рік тому

      En realidad es al revés. NET Framework es el que está obsoleto y Microsoft ya no sacará más versiones. De acá en adelante todo será solo Core (en realidad se llamará .NET a secas, más el número de versión obviamente).

  • @adrianperalta7523
    @adrianperalta7523 Рік тому

    Public Function BUSCARX(valor_Buscado, matriz_Buscada As Range, matriz_Devuelta As Range)
    For Each elemento In matriz_Buscada
    If elemento = valor_Buscado Then
    BUSCARX = matriz_Devuelta.Item(elemento.Row - matriz_Buscada(1, 1).Row + 1)
    Exit For
    Else
    BUSCARX = "No encontrado"
    End If
    End Function

    • @adrianperalta7523
      @adrianperalta7523 Рік тому

      me sale el error for sin next , este es un codigo ya que mi excel no tiene la funcion buscar y la necesito, gracias desde ya, me suscribiré un abrazo hermano