C# 将值记录到文件中

C# 将值记录到文件中,c#,C#,我是c开发的初学者 我继承的代码对我来说很复杂,而且没有很好的注释 有一件事我需要帮助 1我正在向下面的函数传递一个文件句柄,我想能够做的是记录从“e.EventArgs.TrapV2Message.Enterprise.ToString”返回的值-我猜我可以重新编写函数,但不能更改函数的逻辑/用途-我该怎么做 public static IObservable<GenericTrapMessage> ToObservableGenericTrapMessage(this TrapV

我是c开发的初学者

我继承的代码对我来说很复杂,而且没有很好的注释

有一件事我需要帮助

1我正在向下面的函数传递一个文件句柄,我想能够做的是记录从“e.EventArgs.TrapV2Message.Enterprise.ToString”返回的值-我猜我可以重新编写函数,但不能更改函数的逻辑/用途-我该怎么做

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

            Logger.Log("ToObservableGenericTrapMessage V2", Serilog.Events.LogEventLevel.Information);

            return Observable.FromEventPattern<TrapV2MessageReceivedEventArgs>(
                    h => handler.MessageReceived += h,
                    h => handler.MessageReceived -= h)
                .Select(e => new GenericTrapMessage
                {
                    Timestamp = e.EventArgs.TrapV2Message.TimeStamp,
                    Sender = e.EventArgs.Sender.ToString() + ":" + System.Environment.MachineName.ToString(),
                    Type = e.EventArgs.TrapV2Message.Enterprise.ToString(),
                    Variables = e.EventArgs.TrapV2Message.Variables().Select(variableMapping).ToList()

                });

        }
在函数中,使用表达式lambda执行选择;您只需将其设置为lambda语句并在其中执行日志:

//... 返回可观察的.FromEventPattern h=>handler.MessageReceived+=h, h=>handler.MessageReceived-=h .选择E=>{ Logger.Loge.EventArgs.Sender.ToString; 返回新的GenericTrapMessage{ Timestamp=e.EventArgs.TrapV2Message.Timestamp, Sender=e.EventArgs.Sender.ToString+:+System.Environment.MachineName.ToString, Type=e.EventArgs.TrapV2Message.Enterprise.ToString, Variables=e.EventArgs.TrapV2Message.Variables.SelectvariableMapping.ToList }; };
也许你可以从输入中提取值?它是否存在于TrapV2MessageHandler中?是否可以观察到。选择lazy抱歉,不知道RX?如果是,并且您不想更改行为,那么最好在调用方使用返回值的地方添加日志记录。如果没有,那么您可以将Select lambda参数扩展到一个多行,在该多行中创建新GenericTrapMessage的实例,记录其类型和返回实例。TrapV2MessageHandler的问题是有很多很多属性/方法,我查看了它们,但没有什么明显的…@Sinatr-您写道…如果没有,然后,您可以将Select lambda参数扩展到多行,在其中创建新GenericTrapMessage的实例,记录其类型并返回实例。-你能告诉我怎么做吗?@IanCarrick下面是我的意思。我不知道RX,所以不能肯定这个方法是好的还是坏主意。谢谢,这个答案很完美,解决了我的问题。