方法错误:非静态字段,方法或属性需要对象引用
我试图显示正在被复制到方法中的当前文件。方法错误:非静态字段,方法或属性需要对象引用
下面是代码:
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
趣谈从一个静态方法调用非静态的属性,但我不知道如何修理它。
任何帮助表示赞赏! ,谢谢
我的猜测是你可能在"lblBackupStatus.Text = ...
上得到错误。
该标签属于一个类实例(“对象”);你的静态CopyAll方法不(它是“静态的”)。
问:CopyAll需要是静态的吗?如果不是,请查看是否消除“静态”修复问题。
否则,请张贴/标识发生错误的行。
是的,这是给我错误的路线。 – Boundinashes6 2013-05-06 19:35:22
它很可能也是'target',因为它在第一行被引用,甚至是'source'。 – Joshua 2013-05-06 19:35:28
@Joshua - 将类实例作为参数传递给静态方法是完全没问题的 - “target”或“source”都不会在这里产生编译错误。 – paulsm4 2013-05-06 19:37:33
您在这里粘贴的这些行中的哪一行是编译器引用的? – 2013-05-06 19:32:49
我的猜测是你的问题是使用'lblBackupStatus'。为什么你需要这种方法是静态的? – 2013-05-06 19:33:08
@Claudio Redi - 我想我是在发布你的同时输入我的答案。我们不仅同意 - 它看起来像我们(巧合!)使用几乎完全相同的文字:) – paulsm4 2013-05-06 19:35:41