0

不幸的是,我不能展示代码,但故事是这样的:我应该了解我们在工作中使用的程序是如何工作的。我追踪了从用户界面元素到函数内部的数据流。但是现在,在类定义中,我陷入了困境。我正在跟踪的数据被传递给一个函数。在类中,有一行带有该函数的函数签名,但没有实现。

我该如何寻找实现?所有代码(除了微软的)都是内部开发的,应该驻留在项目中,但 Go To Definition 只会让我回到签名。

我们正在使用 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方法

在第一种情况下,实现在从此类派生的类中。在第二种情况下,实现在此类定义的另一个“部分”中,可能在另一个文件中。在第三种情况下,实现位于正在导入的某个(本机)DLL 中。

另一种可能性是您实际上并没有查看源代码,而只是查看了从 C# 项目文件中的程序集引用生成的元数据。

那么,您在该方法中看到了哪些关键字abstractpartialextern

于 2012-08-03T12:07:27.707 回答
0

这意味着您只编译了没有源的类。可能是一些DLL?

于 2012-08-03T11:56:43.140 回答
0

你可能在看一个界面吗?

接口具有定义的功能,但没有实现。它用于表明它们存在并且必须符合规范。

您不能发布示例代码并更改措辞以供我们查看吗?

于 2012-08-03T11:58:17.763 回答