2013-05-06 63 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

相關問題