private void Include(IList<string> includes, Action action)
{
if (includes != null)
{
foreach (var include in includes)
action(<add include here>);
}
}
Ich möchte es so nennen
this.Include(includes, _context.Cars.Include(<NEED TO PASS each include to here>));
Die Idee ist, jedes Include an die Methode zu übergeben.
Action
nur eineAction
oder ist es eineAction<T>
oder eine andere Variante? Wie viele Parameter möchten Sie?includes
Argument übergeben. Ist die Idee, dass Sie jedes Mitglied derincludes
Liste an die übergeben möchtenaction
? Wenn ja, einfach bestehen_context.Cars.Include
(ohne Klammern)._context.Cars.Include
Methode? Die aktualisierte Antwort des Scrum Meisters sieht für mich richtig aus, aber ich denke, die Cars.Include-Methode muss möglicherweise angepasst werden, um eine Zeichenfolge aufzunehmen ...?Antworten:
Wenn Sie wissen, welchen Parameter Sie übergeben möchten, nehmen Sie ein
Action<T>
für den Typ. Beispiel:void LoopMethod (Action<int> code, int count) { for (int i = 0; i < count; i++) { code(i); } }
Wenn der Parameter an Ihre Methode übergeben werden soll, machen Sie die Methode generisch:
void LoopMethod<T> (Action<T> code, int count, T paramater) { for (int i = 0; i < count; i++) { code(paramater); } }
Und der Anrufercode:
Action<string> s = Console.WriteLine; LoopMethod(s, 10, "Hello World");
Aktualisieren. Ihr Code sollte folgendermaßen aussehen:
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); }
quelle
Action<string>
Delegaten, der die aufruftCars.Include
. Alternativ könnte Ihre benutzerdefinierte Include-Methode aFunc<string, whatever type Cars.Include() returns>
Sie suchen
Action<T>
, was einen Parameter nimmt.quelle
T
.Schmutziger Trick: Sie können auch den Lambda-Ausdruck verwenden, um jeden gewünschten Code zu übergeben, einschließlich des Aufrufs mit Parametern.
this.Include(includes, () => { _context.Cars.Include(<parameters>); });
quelle
Action<T>
- so kann ich diese weiterhin ohne Änderung verwenden.