¿Cómo creo múltiples constructores para un tipo de registro en C#?
Creé un tipo de registro como este:
public record Person(int Id, string FirstName, string LastName)
Ahora quiero presentar otra sobrecarga de constructor sin parámetros, ¿cómo puedo hacer eso? En una clase normal haría algo como esto:
public class Person { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public Person() { } public Person(int id, string firstName, string lastName) { Id = id; FirstName = firstName; LastName = lastName; } }
Usa argumentos opcionales.
public record Person(int Id = default, string FirstName = null, string LastName = null);
Puedes escribir tu código como a continuación:
public record Person { public int Id { get; init; } public string FirstName { get; init; } public string LastName { get; init; } //constructor public Person() { //init or do something } //overload constructor public Person(int id, string firstName, string lastName) { Id = id; FirstName = firstName; LastName = lastName; } }
La respuesta seleccionada funciona para este caso simple donde todos los miembros son tipos simples. Con los tipos de referencia, generalmente desea llamar a sus constructores, etc.
La solución correcta es simplemente agregar el constructor que desea de esta manera:
public Rank(int level, string description); record Manager(string FirstName, Rank rank) { public Manager() : this("", new(0, "Entry") { } }
puedes escribirlo así:
Public record Person(int Id,string FirstName,string LastName){ Public Person(YourDto item):this(item.Id,item.FirstName,item.LastName){} }
entonces, en el constructor puede pasar su elemento Dto.