0

残念ながら、コードをお見せすることはできませんが、話は次のとおりです。仕事で使用するプログラムがどのように機能するかを学ぶことになっています。ユーザー インターフェイス要素から関数の深い内部構造へのデータの流れを追跡しました。しかし今、クラス定義の中で行き詰まりました。追跡しているデータは関数に渡されます。クラスには、その関数の関数シグネチャを含む行がありますが、実装はありません。

実装を見つけるにはどうすればよいですか?すべてのコード (Microsoft のものを除く) は社内で開発されたものであり、プロジェクト内に存在する必要がありますが、[定義に移動] は署名に戻るだけです。

C# と .Net 4.0 を使用しています。

これが行です:

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

今、SomethingDoer への参照を探して実装クラスを探していますが、残念ながらブレークポイントがヒットしていません。間違ったクラスを持っていますか、それとも抽象関数について何か不足していますか?

4

4 に答える 4

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!
    }
}
于 2012-08-03T11:57:46.843 に答える
1

あなたが本当にソースコードを見ているなら、それは可能性があります

  1. abstractメソッド_
  2. partialメソッド_
  3. externメソッド_

最初のケースでは、実装はこのクラスから派生したクラスにあります。2 番目のケースでは、実装はこのクラスの定義の別の「部分」、おそらく別のファイルにあります。3 番目のケースでは、実装はインポートされている (ネイティブ) DLL 内にあります。

もう 1 つの可能性は、実際にソース コードを見ているのではなく、C# プロジェクト ファイルのアセンブリ参照から生成されたメタデータだけを見ていることです。

では、どのキーワード、、、abstractまたはpartialメソッドexternで表示されますか?

于 2012-08-03T12:07:27.707 に答える
0

これは、ソースなしでクラスのみをコンパイルしたことを意味します。いくつかのDLLである可能性がありますか?

于 2012-08-03T11:56:43.140 に答える
0

おそらくインターフェースを見ていますか?

インターフェイスには定義済みの関数がありますが、実装はありません。それらが存在し、仕様に準拠する必要があることを示すために使用されます。

サンプル コードを投稿して、私たちが見られるように文言を変更してもらえませんか?

于 2012-08-03T11:58:17.763 に答える