2012-08-03 41 views
0

不幸的是,我不能顯示代碼,但這裏的故事: 我應該學習如何在工作中使用我們的程序。我將用戶界面元素中的數據流追溯到函數的深層內部。但是現在,在一個類定義中,我陷入了困境。我正在跟蹤的數據被傳遞給一個函數。在這個類中有一個包含該函數的函數簽名的行,但沒有實現。沒有實現的函數簽名在類定義中意味着什麼?

我該如何去尋找實施?所有的代碼(微軟除外)都是內部開發的,應該駐留在項目中,但Go To Definition只能讓我回到簽名。

我們使用C#和.Net 4.0。

這裏的行:

public abstract class SomethingDoer : SomethingElse 
    // ... 
    protected abstract void DoSomething(T1 param1, T2 param2, T3 param3); 

現在,我通過查找引用SomethingDoer尋找實現類,但不幸的是,斷點不打。我是否有錯誤的類,或者我錯過了關於抽象函數的一些東西?

+3

顯示你找到的那一行,是否是抽象的,部分的? – 2012-08-03 11:58:05

+2

您可能正在查看您沒有源代碼的DLL中引用的類的元數據。沒有代碼,我們永遠不會知道。代碼文件選項卡是否顯示「文件名[來自元數據]」? – 2012-08-03 11:59:01

+0

@AlexK。它是抽象的。我完全忽略了這一點。感謝這個提示。現在我將繼續尋找實施這個課程的課程。 – lowerkey 2012-08-03 12:01:56

回答

3

沒有代碼,這真的很難回答。沒有實現的函數定義通常是一個接口或摘要。接口可以有只有定義,而抽象可以混合兩種:

public interface ISomeInterface { 
    void SomeMethod(); 
} 

public abstract SomeAbstractClass { 
    public abstract void SomeMethod(); 

    public void AwesomeMethod() { 
     // I do awesome things; look at my method body! 
    } 
} 
0

這意味着你只編譯沒有sorces的類。可能是一些DLL?

+0

有什麼奇怪的是,這裏實現了一些功能。 – lowerkey 2012-08-03 11:58:09

0

你可能看的界面?

接口具有已定義的功能但沒有實現。它用來表明它們存在並且必須符合規範。

難道你不能發佈示例代碼,並改變我們看到的措辭?

+0

不幸的是,我無法發佈代碼。 – lowerkey 2012-08-03 12:02:55

1

如果你真的看源代碼,它可能是

  1. abstract方法
  2. 一個partial方法
  3. extern方法

在第一種情況下,該實現在來自這個類的類中。在第二種情況下,實現是在這個類的定義的另一個「部分」中,可能在另一個文件中。在第三種情況下,實現在一個正在導入的(本地)DLL內部。

另一種可能性是,您實際上並沒有在查看源代碼,而只是從C#項目文件中的程序集引用生成的元數據。

那你用這個方法看到哪個關鍵字abstract,partialextern

相關問題