Estoy escribiendo un objeto que siempre debe tener ciertos valores. En particular, siempre debe tener un valor para la propiedad Name
.¿Cómo puedo abortar una inicialización de objeto?
public class User
{
public string Name { get; set; }
public User(string name)
{
Name = name;
}
}
Ahora, hay un par de reglas de negocio que tengo que poner en práctica en esta clase. Una de ellas es que la propiedad Name
debe ser un nombre único. Por lo tanto, yo creo que el inicializador para este objeto sería algo esto:
public User(string name, IQueryable<User> allUsers)
{
var matches = allUsers.Where(q => q.Name == name).ToList();
if(matches.Any())
{
// abort object initialization
}
Name = name;
}
Pero no estoy seguro de cómo iba a abortar la inicialización de objetos. De hecho, ¿es eso posible?
¿Hay alguna manera de abortar una inicialización de objeto (es decir, establecer el objeto como nulo) o hay una forma mejor de lograr esto?
una forma de fuerza bruta, establezca todos los campos en nulo, añadir el objeto con campos nulos, eliminar el objeto – RhysW
esto sólo puede ser código de ejemplo, pero en caso de que no lo es: Se puede suministrar un predicado a 'Cualquier ', para que no tengas que pasar por' Donde'. –
@BrianRasmussen Ambos tienen exactamente el mismo resultado, así que es una preferencia realmente personal la que usa. La llamada 'ToList' por otro lado evita que el cortocircuito de' Any' no evalúe toda la consulta. – Servy