2013-05-06 64 views
0

我试图显示正在被复制到方法中的当前文件。方法错误:非静态字段,方法或属性需要对象引用

下面是代码:

public static void CopyAll(DirectoryInfo source, DirectoryInfo target) 
{ 
    // Check if the target directory exists, if not, create it. 
    if (Directory.Exists(target.FullName) == false) 
     Directory.CreateDirectory(target.FullName); 

    // Copy each file into it’s new directory. 
    foreach (FileInfo fi in source.GetFiles()) 
    { 
     //Line where the error is 
     lblBackupStatus.Text = "Copying " + target.FullName.ToString() + fi.Name.ToString(); 

     fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true); 
    } 

    // Copy each subdirectory using recursion. 
    foreach (DirectoryInfo diSourceSubDir in source.GetDirectories()) 
    { 
     DirectoryInfo nextTargetSubDir = target.CreateSubdirectory(diSourceSubDir.Name); 
     CopyAll(diSourceSubDir, nextTargetSubDir); 
    } 
} 

我得到的错误是:

An object reference is required for the non-static field, method, or property

趣谈从一个静态方法调用非静态的属性,但我不知道如何修理它。

任何帮助表示赞赏! ,谢谢

+0

您在这里粘贴的这些行中的哪一行是编译器引用的? – 2013-05-06 19:32:49

+1

我的猜测是你的问题是使用'lblBackupStatus'。为什么你需要这种方法是静态的? – 2013-05-06 19:33:08

+0

@Claudio Redi - 我想我是在发布你的同时输入我的答案。我们不仅同意 - 它看起来像我们(巧合!)使用几乎完全相同的文字:) – paulsm4 2013-05-06 19:35:41

回答

3

我的猜测是你可能在"lblBackupStatus.Text = ...上得到错误。

该标签属于一个类实例(“对象”);你的静态CopyAll方法不(它是“静态的”)。

问:CopyAll需要是静态的吗?如果不是,请查看是否消除“静态”修复问题。

否则,请张贴/标识发生错误的行。

+0

是的,这是给我错误的路线。 – Boundinashes6 2013-05-06 19:35:22

+0

它很可能也是'target',因为它在第一行被引用,甚至是'source'。 – Joshua 2013-05-06 19:35:28

+1

@Joshua - 将类实例作为参数传递给静态方法是完全没问题的 - “target”或“source”都不会在这里产生编译错误。 – paulsm4 2013-05-06 19:37:33

相关问题