如何从另一个类文件中调用方法/函数

Den*_*nis 0 c# asp.net-mvc-3

我尝试将此函数(和其他函数)放在我的项目中的单独的类文件中,该文件位于"/Helpers/UploadFiles.cs"下

namespace Artikelhantering.Helpers
{
public class UploadFiles
{

    private void EnsureDirectoriesExist(string SKU)
    {

        // if the directory doesn't exist - create it. 
        if (!System.IO.Directory.Exists("//servername/wwwroot/prodimg/" + SKU))
        {
            System.IO.Directory.CreateDirectory("//servername/wwwroot/prodimg/" + SKU);
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

然后在控制器中我添加了Artikelhantering.Helpers; ,它也被添加到web.config文件的namespace部分以及global.asa.cx中.

然后我想我可以从我的控制器中的ActionResult这样调用它

[ChildActionOnly]
public ActionResult _EnumerateFolder(string SKU)
        {
            // create directory if it does not exist
            EnsureDirectoriesExist(SKU);

            ViewBag.SKU = SKU;
            var folder = Directory.EnumerateFiles("//servername/wwwroot/prodimg/" + SKU);
            return View(folder);
        }
Run Code Online (Sandbox Code Playgroud)

但我得到的只是:

错误2当前上下文中不存在名称"EnsureDirectoriesExist"

试着把它写成UploadFiles.EnsureDirectoriesExist(); 但这也不起作用.我如何调用这些方法而不将它们全部放在同一个文件中?我想更好地组织这个.

Tho*_*mar 5

该方法是私有的.您无法访问其他类的私有成员.

还有其他一些问题:

  1. 您编写的方法是实例方法,因此您需要有一个类的实例来调用该方法.
  2. 如果你想使用它UploadFiles.EnsureDirectoryExists(),你需要使它成为一个类方法(static).
  3. 我不确定您是否可以按照尝试的方式创建新目录.如果您尝试在运行此代码的同一台计算机上创建目录,请使用本地文件名.

1)的示例代码:

UploadFiles uf = new UploadFiles();
uf.EnsureDirectoryExists();
Run Code Online (Sandbox Code Playgroud)

2)的示例代码:

public class UploadFiles
{
    public static void EnsureDirectoriesExist(string SKU)
    {
        // if the directory doesn't exist - create it. 
        if (!System.IO.Directory.Exists("//servername/wwwroot/prodimg/" + SKU))
        {
            System.IO.Directory.CreateDirectory("//servername/wwwroot/prodimg/" + SKU);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我还建议您使用Google阅读C#教程,该教程向您提供有关哪些类以及如何使用它们的信息.