簡體   English   中英

如何在Action中傳遞參數?

[英]How can I pass a parameter in Action?

private void Include(IList<string> includes, Action action)
{
    if (includes != null)
    {
        foreach (var include in includes)
            action(<add include here>);
    }
}

我想這樣稱呼它

this.Include(includes, _context.Cars.Include(<NEED TO PASS each include to here>));

這個想法是將每個包含傳遞給方法。

如果您知道要傳遞的參數,請為該類型執行Action<T> 例:

void LoopMethod (Action<int> code, int count) {
     for (int i = 0; i < count; i++) {
         code(i);
     }
}

如果要將參數傳遞給方法,請使方法通用:

void LoopMethod<T> (Action<T> code, int count, T paramater) {
     for (int i = 0; i < count; i++) {
         code(paramater);
     }
}

和來電者代碼:

Action<string> s = Console.WriteLine;
LoopMethod(s, 10, "Hello World");

更新。 您的代碼應如下所示:

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);
}

你正在尋找Action<T> ,它接受一個參數。

臟技巧:您也可以使用lambda表達式傳遞您想要的任何代碼,包括帶參數的調用。

this.Include(includes, () =>
{
    _context.Cars.Include(<parameters>);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM