Excelente video, muy pocos explican sobre esto y al principio cuándo llegas a ver los no sabes que onda jaja. Igual los TResult, TModel, TEntity y esas vainas te confunde al principio. Saludos desde 🇲🇽
no entiendo esas propiedades q se ven en la linea 12 min 1:35, no estarian incompletas? osea al get no le falta el return por ejemplo y al set el value??
Te refieres a Marca y Modelo? No, estan bien, a ese get/set sel le denomína "getter y setter" y es la encapsulación de un field en una propiedad. No se si me explico claramente, pero no, no hace falta que pongas return o la asignacion de valores con value
@@NetMentor ahh xq yo aprendi a escribirlos de la forma por ejemplo public int X { get{ return x; }set { x = value; }} tu forma me parecio incompleta, pero si me dices esta bien pues te creo jaja
Eso funciona, pero como ves con tu 'X' devuelves el valor de 'x'. El resultado final es el mismo (el compilador el hace por detrás) A mí me.gusta más únicamente con las propiedades y el get;set; ya que es mucho menos código y mas clara. También depende en que versión del lenguaje estés, creo que esta forma no funciona en C#1
Muy bien video!. Una pregunta, no me queda claro para que podriamos usar un filtro limitando a que el generic sea de una clase especifica. No perderia el sentido de estar usando generics?
hay casos y casos, por ejemplo cuando no pones ningún filtro, estas aceptando cualquier tipo, lo que quiere decir que no vas a interactuar con ellos de forma individual, por ejemplo List; Pero cuando estas programando para la empresa en muchos casos vas a necesitar acciones que solo suceden a un subgrupo de los tipos, pues estos son los que "filtras" con el mismo grupo, ya que una vez indicas que los quieres de un tipo o de otro, puedes acceder a sus propiedades y sus métodos; Al final tienes que buscar lo que mas te convenga.
Buen video felicitaciones por tus videos, quería consultarte porque una clase podría tener un constructor vacío, en que casos es necesario o no?, saludos desde Perú.
Hola! El constructor vacío se crea siempre automáticamente aunque tu no crees, ya que es el de por defecto u el compilador lo crea. Luego personalmente no suelo tener ninguna clase con sin constructor, salvo en las dto que devuelve una API o similar (siempre transferencia de datos a otro sistema), esto es porque si creas un constructor vacío, tienes que crear setters para tus propiedades que normalmente llevan al.codigo a funcionar de formas inesperadas. Tengo un vídeo sobre inmutabilidad en el que hablo sobre este tema ua-cam.com/video/ZSCSXo7G8o8/v-deo.html Un saludo !
Una pregunta Como puedo indicar que T solo acepte aquellas clases que incorporen dos interfaces distintas, por ejemplo que T acepte la calse A que implementa la interfas IC y que tambien se acepte que T acepte la clase B que implemente la itervace IF se puede hacer eso no he encontrado forma y la info que he checado no hacen referencia a nada parecido siempre es con una, pero lo que quiero es que T acepte cualquiera de las dos interfaces, pero a la ahora de poner where T:IC,IF lo que me pasa que la calse que pongo no me va poreue no continene una de las interfaces, pero es que no quiero que la calse A contenga las dos interfaces pero si quiero que T me permita y si la clase implementa IF tambien me lo permita auque no esten las dos interfaces implementadas en la calse A o B. se entide mi problema?
Buenas si, te entiendo, no puedes poruqe A implementa IC pero no IF. cuando utilizas la "coma" lo que estas indicando es ambas, no una o la otra, esa acción no es posible. en tu caso, para arreglar el problema tienes que definir otra interfaz "ICF" con los metodos comunes entre IC y IF, después ambas interfaces deben implementar ICF y en tu clase debes hacer where T : ICF; esta es la única solución. Cualquier problema me dices, Un saludo!
Nope, únicamente puedes seleccionar una clase como constraint; Lo que si puedes hacer es indicar multiples interfaces, por ejemplo IPersona, IVehiculo Pero no filtra una u otra, sino que exije ambas; por ejemplo en este caso si hcieras where T : IPersona, IVehiculo necesitarias una clase que heredara de ambas, royo lo siguiente: public class Entidad : IPersona, IVehiculo la cual contendria TODOS los metodos/propiedades etc, de AMBAS interfaces.
enlace al blog: www.netmentor.es/Entrada/generics-csharp
Twitter: twitter.com/NetMentorTW
Muy buena explicación. Muchas gracias!!
Muy buena explicación, me estoy leyendo casi todos los apartados de tu web de C# y uno mejor que el otro. Gracias!!
muchas GRacias por la explicación!!!...muy bueno el video!!😃👏👏👏🍻🍻
Genial, incredible video. Clear and concise !
Muy bien explicado, gracias!
Excelente video, muy pocos explican sobre esto y al principio cuándo llegas a ver los no sabes que onda jaja. Igual los TResult, TModel, TEntity y esas vainas te confunde al principio. Saludos desde 🇲🇽
Buen vídeo!!! Sigue así 💪
no entiendo esas propiedades q se ven en la linea 12 min 1:35, no estarian incompletas? osea al get no le falta el return por ejemplo y al set el value??
Te refieres a Marca y Modelo?
No, estan bien, a ese get/set sel le denomína "getter y setter" y es la encapsulación de un field en una propiedad.
No se si me explico claramente, pero no, no hace falta que pongas return o la asignacion de valores con value
@@NetMentor ahh xq yo aprendi a escribirlos de la forma por ejemplo
public int X { get{ return x; }set { x = value; }} tu forma me parecio incompleta, pero si me dices esta bien pues te creo jaja
Eso funciona, pero como ves con tu 'X' devuelves el valor de 'x'. El resultado final es el mismo (el compilador el hace por detrás)
A mí me.gusta más únicamente con las propiedades y el get;set; ya que es mucho menos código y mas clara.
También depende en que versión del lenguaje estés, creo que esta forma no funciona en C#1
@@NetMentor ahh okkk
Muy bien video!. Una pregunta, no me queda claro para que podriamos usar un filtro limitando a que el generic sea de una clase especifica. No perderia el sentido de estar usando generics?
hay casos y casos, por ejemplo cuando no pones ningún filtro, estas aceptando cualquier tipo, lo que quiere decir que no vas a interactuar con ellos de forma individual, por ejemplo List;
Pero cuando estas programando para la empresa en muchos casos vas a necesitar acciones que solo suceden a un subgrupo de los tipos, pues estos son los que "filtras" con el mismo grupo, ya que una vez indicas que los quieres de un tipo o de otro, puedes acceder a sus propiedades y sus métodos; Al final tienes que buscar lo que mas te convenga.
Buen video felicitaciones por tus videos, quería consultarte porque una clase podría tener un constructor vacío, en que casos es necesario o no?, saludos desde Perú.
Hola! El constructor vacío se crea siempre automáticamente aunque tu no crees, ya que es el de por defecto u el compilador lo crea.
Luego personalmente no suelo tener ninguna clase con sin constructor, salvo en las dto que devuelve una API o similar (siempre transferencia de datos a otro sistema), esto es porque si creas un constructor vacío, tienes que crear setters para tus propiedades que normalmente llevan al.codigo a funcionar de formas inesperadas.
Tengo un vídeo sobre inmutabilidad en el que hablo sobre este tema ua-cam.com/video/ZSCSXo7G8o8/v-deo.html
Un saludo !
Una pregunta Como puedo indicar que T solo acepte aquellas clases que incorporen dos interfaces distintas, por ejemplo
que T acepte la calse A que implementa la interfas IC
y que tambien se acepte que T acepte la clase B que implemente la itervace IF
se puede hacer eso no he encontrado forma y la info que he checado no hacen referencia a nada parecido siempre es con una, pero lo que quiero es que T acepte cualquiera de las dos interfaces, pero a la ahora de poner where T:IC,IF lo que me pasa que la calse que pongo no me va poreue no continene una de las interfaces, pero es que no quiero que la calse A contenga las dos interfaces pero si quiero que T me permita y si la clase implementa IF tambien me lo permita auque no esten las dos interfaces implementadas en la calse A o B. se entide mi problema?
Buenas si, te entiendo, no puedes poruqe A implementa IC pero no IF.
cuando utilizas la "coma" lo que estas indicando es ambas, no una o la otra, esa acción no es posible.
en tu caso, para arreglar el problema tienes que definir otra interfaz "ICF" con los metodos comunes entre IC y IF, después ambas interfaces deben implementar ICF y en tu clase debes hacer where T : ICF;
esta es la única solución.
Cualquier problema me dices, Un saludo!
No es terrible.... es acoplamiento!!!
Puedes poner where: Car, Person ?
Gracias por el video
Nope, únicamente puedes seleccionar una clase como constraint;
Lo que si puedes hacer es indicar multiples interfaces, por ejemplo IPersona, IVehiculo
Pero no filtra una u otra, sino que exije ambas;
por ejemplo en este caso si hcieras where T : IPersona, IVehiculo
necesitarias una clase que heredara de ambas, royo lo siguiente: public class Entidad : IPersona, IVehiculo la cual contendria TODOS los metodos/propiedades etc, de AMBAS interfaces.