programing tip

Action에서 매개 변수를 어떻게 전달할 수 있습니까?

itbloger 2020. 11. 18. 08:38
반응형

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

아이디어는 각 include를 메소드에 전달하는 것입니다.


전달하려는 매개 변수를 알고있는 경우 Action<T>유형으로 a 를 사용하십시오. 예:

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>매개 변수를 사용하는을 찾고 있습니다.


더티 트릭 : 람다 식을 사용하여 매개 변수가있는 호출을 포함하여 원하는 코드를 전달할 수도 있습니다.

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

참고 URL : https://stackoverflow.com/questions/4965508/how-can-i-pass-a-parameter-in-action

반응형