0

そのため、C#プロジェクトのすべてのファイルで単純なログ機能を利用しようとしています。(visual studio 2010)私はvb.netでこのプロジェクトを作成しましたが、今はそれを書き直してc#でクリーンアップしようとしています。私もC#を初めて使用するので、事前にお詫び申し上げます。

vb.netでは、それは非常に単純でした。

  • .vbファイルを作成する
  • プロジェクトのライブラリフォルダに入れます
  • 次に、ライブラリファイルのメソッドを使用するファイルの上部に、「インポート」と入力します。

素晴らしい、c#だけがこれを許可していないようです。「使って」やってみました。ただし、インテリセンスでは、「using .Library」のみを配置できます。ここで、libraryは、クラスが存在するフォルダーの名前です。

いくつかのグーグルと調査の結果、C#ではグローバルメソッドが許可されていないようです。これは、とにかく一般的に推奨されていない方法だと思います。

ロギングメソッドには、書き込むファイルと追加するメッセージの入力パラメータがあります。それほど長くはありませんが、使用したいすべてのクラスでコードを書き直すのはもったいない気がします。

上記のutilsクラスのインスタンスを、それを使用するクラスに作成することはできますが、vb.netでこれを行う必要はありませんでした。(インポートするだけで、メソッドを使用できるようになります)

だから私はここで髪を分割しているだけですか、それとも私が見ていないか知らないこれを行う簡単な方法はありますか?

ありがとう!

編集:リクエストにより追加されたコード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ProjectProgram.Library
{
    public class ApplicationUtilities
    {

    public string homeLogPath = System.Environment.ExpandEnvironmentVariables("%SystemRoot%\\System32\\folderName\\Logs");

    public void toLogFile(string LogName, string logEntry)
    {

        string LogFile = homeLogPath + "\\" + LogName;
        if (!File.Exists(LogFile))
        {
            File.WriteAllText(LogFile, string.Empty, Encoding.UTF8);
        }

        File.AppendAllText(LogFile, DateTime.Now + " " + logEntry + "\n");

    }

}
}

これは私が別のクラスで使用したいコードです。別のクラスからtoLogFileメソッドを呼び出すにはどうすればよいですか?

4

2 に答える 2

1

ロギングクラスとそのメソッドpublic staticを作成し、それを使用するすべてのファイルに含めます。次に、次のような操作を行うだけでアクセスできます。

  Logger.WriteLine("log message");

または、Log4Nethttp : //logging.apache.org/log4net/のようなライブラリを使用します

于 2013-03-06T20:11:31.813 に答える
0

ユーティリティクラスは次のようになります。

namespace Code.Utilities{
    public class MyUtilities{

        public static void LogString(string input){
            //Do something
        }
    }
}

その場合、LogString()を使用する他のクラスは次のようになります。

using Code.Utilities;    

namespace SomeSpace{
     public class SomeClass{
         public void F(string input){
             MyUtilities.LogString(input);
         }
     }    
}
于 2013-03-06T20:08:51.760 に答える