0

私は Log4Net を使用しており、Windows サービス ループ内で書式設定して CSV ファイルに出力するためのカスタム クラスを作成しました。

private void AutoLogger(uint id, EdkDll.EE_DataChannel_t channel, double[] value)
        {

            try
            {
                log.Info(new Log
                {
                    ElapsedTime = timer.Elapsed.Minutes.ToString(),
                    UserId = id,
                    Action = channel.ToString(),
                    Value = value.ToString()
                });
            }

問題は、ループの反復ごとに「値」に 256 個の値があることです。log.Info(new Log値をループするコード内にループを作成したいと思います。何かのようなもの:

log.Info(new Log
                {
                    ElapsedTime = timer.Elapsed.Minutes.ToString(),
                    UserId = id,
                    Channel = channel.ToString(),
                    for(int i = 0; i < value.Count; i++)
                    {  
                      "Value_" + i = value[i].ToString()
                    }
                });

しかし、これは不可能です。これを行う方法はありますか?私Logのクラスは次のようになります。

public class Log
    {
        public DateTime DateAndTime { get; set; }
        public string ElapsedTime { get; set; }
        public string Level { get; set; }
        public uint UserId { get; set; }
        public string Action { get; set; }
        public string Value { get; set; }
    } 

ありがとう。

4

1 に答える 1

0

区切り文字 (おそらく \n) を含む文字列にループしてから、log.Info(newString); をループできますか? たくさんやりたい場合は、拡張メソッドを作成するだけです...

例:(注:これはテスト済みのコードではありません。ここに入力しただけです)

  string strBuffer ="";
    List<Dingus> dingusList = GetDingusList();
    foreach( Dingus dingus in dingusList )
    {
        \\if you have a ToString defined use it here, else just output all the properties of your object
        strBuffer+= dingus.name+" ,"+dingus.value+"\n";
    }
    log.Info(strBuffer);

ここでそれを行う別の方法の例:

http://www.l4ndash.com/Log4NetMailArchive%2Ftabid%2F70%2Fforumid%2F1%2Fpostid%2F15171%2Fview%2Ftopic%2FDefault.aspx

于 2012-04-26T17:48:56.253 に答える