簡體   English   中英

將第二個參數傳遞給函數

[英]Pass Second Parameter Into Function

我是 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()
            }
         });
     ...
    }

我想添加第二個字符串 'OID' 參數,如下所示......代碼參考 = 4

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

我需要幫助的部分是如何更改上面“Code Ref=2”和“Code Ref=3”中顯示的代碼以處理第二個字符串參數?

我的想法是我只需要更改傳遞新字符串參數的“Code Ref = 3”下的一行,但我不知道如何執行此操作 - 我認為我需要更改的行:

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

您可以像往常一樣向函數添加第二個參數:

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

暫無
暫無

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

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