Je me demandais, après avoir lu this question ... il a ce code:l'utilisation de nouvelles dans un Func <T>
public static T FindOrCreate<T>(this Table<T> table, Func<T, bool> find)
where T : new()
{
T val = table.FirstOrDefault(find);
if (val == null)
{
val = new T();
table.InsertOnSubmit(val);
}
return val;
}
Serait-il possible d'envoyer aussi dans ce nouvel élément comme un autre Func? Je veux dire, bien sûr que ce serait le cas. Mais, cela aurait-il déjà été créé? Ou serait-il créé en premier lorsque vous exécutez réellement le Func? Disons que vous avez ceci:
public static T FindOrCreate<T>(this Table<T> table, Func<T, bool> find, Func<T> replacement)
where T : new()
{
T val = table.FirstOrDefault(find);
if (val == null)
{
val = replacement();
table.InsertOnSubmit(val);
}
return val;
}
Et puis appelé qu'en faisant ceci:
var invoiceDb = ctx.Invoices.FindOrCreate(a => a.InvoicerId == InvoicerId
&& a.Number == invoiceNumber,
() => new Invoice());
invoiceDb.Number = invoiceNumber;
Si cette facture a été trouvé, aurait été créé cette nouvelle facture? Ou ce code n'est-il pas exécuté jusqu'à ce que la fonction soit appelée? ou comment ça marche?
qui est également vrai. J'ai juste copié le code de sa réponse, je n'y ai pas vraiment réfléchi: p – Svish