단일 매개 변수로 호출 할 때 선택적 매개 변수가있는 메서드 대리자가 작동하지 않음

우스만 칸

다음과 같은 방법이 있습니다.

public delegate void SubscriberAction(string a, string b = null);

내 방법

public void Subscribe(SubscriberAction action)
{
    var consumer = new EventingBasicConsumer(Channel);
    consumer.Received += (model, eventArgs) =>
    {
        try
        {
            var body = eventArgs.Body;
            action?.Invoke(Encoding.UTF8.GetString(body), eventArgs.RoutingKey); 
            // The above works when I call it with one or two strings
        }
        finally
        {
            Channel.BasicAck(eventArgs.DeliveryTag, false);
        }
    };
    Channel.BasicConsume(Configuration.QueueName, false, consumer);
}

위에 표시된대로이 작업을 호출하면 선택적 매개 변수를 인식하고 의도 한대로 호출 할 수 있습니다. 그러나이 Subscribe대리자 매개 변수를 사용 하는 메서드를 사용하면 원하는 방식으로 호출 할 수 없습니다.

따라서 이것은 작동하지 않습니다.

subscriber.Subscribe(x =>
{
    // do stuff
});

내가 이것을 할 때만 작동

subscriber.Subscribe((x, y) =>
{
    // do stuff
});

처음에는 Action<string> action매개 변수 로 사용 Subscribe했지만 선택적 두 번째 문자열 매개 변수를 추가해야했으며 Action은 선택적 매개 변수를 허용하지 않기 때문에 (틀린 경우 수정) 위에서 한 것처럼 사용자 지정 대리자를 사용하라는 대답을 찾았습니다. .

Subscribe하나 또는 두 개의 매개 변수로 메소드를 호출하려면 어떻게 해야합니까?

Quercus

Action<String, String>anothet Subscribe방법으로 돌아가서 추가 :

public void Subscribe(Action<string> action) => Subscribe((x, y) => action(x));

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관