Передать второй параметр в функцию - PullRequest
2 голосов
/ 30 марта 2020

Я новичок в c# и унаследовал код, который недостаточно хорошо прокомментирован, и исходного разработчика больше нет.

Мне нужно передать второй параметр в функцию ниже:

Код ссылки = 1

public class SnmpTrapListener : IDisposable
{
 ....
 private KeyValuePair<string, object> MapVariableValues(Variable variable)
        {
            ....
            return new KeyValuePair(...);
        }    
...
}

Единственные места, в которых вышеуказанная функция вызывается / ссылается, находятся в одном и том же классе и в одном другом классе.

Ссылка из того же класса - это .. .

Код ссылки = 2

var observable = trapV1MessageHandler.ToObservableGenericTrapMessage(_Logger, MapVariableValues)
            .Merge(trapV2MessageHandler.ToObservableGenericTrapMessage(_Logger, MapVariableValues));

Вызов другого класса: ...

Код ссылки = 3

public static IObservable<GenericTrapMessage> ToObservableGenericTrapMessage(this TrapV1MessageHandler handler, Logger Logger, Func<Variable, KeyValuePair<string, object>> variableMapping)
    {
        return Observable.FromEventPattern<TrapV1MessageReceivedEventArgs>(
          h => handler.MessageReceived += h,
          h => handler.MessageReceived -= h)
          .Select(e => 
          {
            return new GenericTrapMessage
            {
                Timestamp = e.EventArgs.TrapV1Message.TimeStamp,
                Sender = e.EventArgs.Sender.ToString() + ":" + System.Environment.MachineName.ToString(),
                Type = e.EventArgs.TrapV1Message.Enterprise.ToString(),
                Variables = e.EventArgs.TrapV1Message.Variables().Select(variableMapping).ToList()
            }
         });
     ...
    }

I хочу добавить второй параметр 'OID' строки, как показано ниже ... Код ссылки = 4

private KeyValuePair<string, object> MapVariableValues(Variable variable, String OID)
            {
                ....
                return new KeyValuePair(...);
            }    
    ...
    }

Часть, в которой мне нужна помощь, - это как изменить код, показанный в "Код ссылки = 2", и «Код Ref = 3» выше для обработки второго строкового параметра?

Я думаю, мне просто нужно изменить одну строку в «Code Ref = 3», передавая новый параметр String, но я не знаю, как для этого - строка, которую я думаю, мне нужно изменить:

Variables = e.EventArgs.TrapV1Message.Variables().Select(variableMapping).ToList()

1 Ответ

2 голосов
/ 30 марта 2020

Вы можете просто добавить второй параметр в свою функцию как обычно:

private KeyValuePair<string, object> MapVariableValues(Variable variable, String OID)
{
}

Затем вам нужно изменить параметр функции в примере кода 3, чтобы принимать функции с 2 входными параметрами, как это:

public static IObservable<GenericTrapMessage> ToObservableGenericTrapMessage(this TrapV1MessageHandler handler, Logger Logger, Func<Variable, String, KeyValuePair<string, object>> variableMapping)
{
}

Для выбора вы можете использовать немного другой синтаксис, чтобы вы могли предоставить дополнительный параметр:

Variables = e.EventArgs.TrapV1Message.Variables().Select(v => variableMapping(v, "yourStringParameter").ToList()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...