【问题标题】:Pass Second Parameter Into Function将第二个参数传递给函数
【发布时间】:2020-03-31 01:15:38
【问题描述】:

我是 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”下更改一行,传入新的 String 参数,但我不知道该怎么做 - 我认为我需要更改的行:

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

【问题讨论】:

    标签: c#


    【解决方案1】:

    您可以像往常一样向函数添加第二个参数:

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

    【讨论】:

      猜你喜欢
      • 2011-03-08
      • 1970-01-01
      • 2019-07-05
      • 2013-12-09
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多