Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c#中的所有文件之间使用方法?_C#_Visual Studio 2010_Extension Methods - Fatal编程技术网

如何在c#中的所有文件之间使用方法?

如何在c#中的所有文件之间使用方法?,c#,visual-studio-2010,extension-methods,C#,Visual Studio 2010,Extension Methods,因此,我试图在我的C#项目中的所有文件中使用一个简单的日志功能。(visual studio 2010)我已经在vb.net中创建了这个项目,现在我正在尝试用c#重写并清理它。我也是C#的新手,所以请提前道歉 在vb.net中,它非常简单: 创建一个.vb文件 将其放入项目的“库”文件夹中 然后在库文件中的任何要使用方法的文件中,在顶部放置“Imports” 太棒了,只有c#不允许这样。我尝试了“使用”,但intellisense只允许我将“使用.Library”放在其中,其中Library

因此,我试图在我的C#项目中的所有文件中使用一个简单的日志功能。(visual studio 2010)我已经在vb.net中创建了这个项目,现在我正在尝试用c#重写并清理它。我也是C#的新手,所以请提前道歉

在vb.net中,它非常简单:

  • 创建一个.vb文件
  • 将其放入项目的“库”文件夹中
  • 然后在库文件中的任何要使用方法的文件中,在顶部放置“Imports”
太棒了,只有c#不允许这样。我尝试了“使用”,但intellisense只允许我将“使用.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方法?

您的实用程序类应该如下所示:

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);
         }
     }    
}

将日志类及其方法设置为publicstatic,并将其包含在所有要使用的文件中。然后,您只需执行以下操作即可访问它

  Logger.WriteLine("log message");

或者使用Log4Net之类的库

尝试创建静态方法。C#不喜欢你的VB尝试可能是因为它认为这个方法没有合适的作用域。你应该添加一些你尝试过的代码,因为我想回答这个问题,但是没有任何代码,我真的不理解你的问题。它不像vb.net中那样干净,但这绝对是我想要的,或者是我能想到的最接近的东西。静态限制类变量的使用。我无法引用我在utils类中声明的homeLogPath。显然,我可以在方法内部移动它。我想现在就可以了。谢谢