private void Include(IList<string> includes, Action action)
{
if (includes != null)
{
foreach (var include in includes)
action(<add include here>);
}
}
Je veux l'appeler comme ça
this.Include(includes, _context.Cars.Include(<NEED TO PASS each include to here>));
L'idée est de passer chaque include à la méthode.
Si vous savez quel paramètre vous voulez passer, prenez un Action<T>
pour le type. Exemple:
void LoopMethod (Action<int> code, int count) {
for (int i = 0; i < count; i++) {
code(i);
}
}
Si vous voulez que le paramètre soit passé à votre méthode, rendez-la générique:
void LoopMethod<T> (Action<T> code, int count, T paramater) {
for (int i = 0; i < count; i++) {
code(paramater);
}
}
Et le code de l'appelant:
Action<string> s = Console.WriteLine;
LoopMethod(s, 10, "Hello World");
Mise à jour. Votre code devrait ressembler à:
private void Include(IList<string> includes, Action<string> action)
{
if (includes != null)
{
foreach (var include in includes)
action(include);
}
}
public void test()
{
Action<string> dg = (s) => {
_context.Cars.Include(s);
};
this.Include(includes, dg);
}
Vous cherchez Action<T>
, qui prend un paramètre.
Truc sale: vous pouvez également utiliser l'expression lambda pour transmettre le code de votre choix, y compris l'appel avec des paramètres.
this.Include(includes, () =>
{
_context.Cars.Include(<parameters>);
});