【问题标题】:Unable to find the logic for interfaces [closed]找不到接口的逻辑[关闭]
【发布时间】:2016-11-08 21:21:41
【问题描述】:

我正在尝试阅读一些代码。它有这些接口,但在它们内部只有“空”的任务。这些在其他 .cs 文件中被调用,但我看不到任何逻辑发生。

例子:

     public interface IProductSubmitter
     {
     Task SubmitAsync(); 
     }

当我在方法上按 F12 时,它不会去任何地方。这是路的“尽头”。

在另一种方法中是这样使用的:

   private IProductSubmitter Submitter {get;}

   public async Task SubmitProductAsync(Product product)
   {
      await this.Submitter.SubmitAsync(); 
      ...
   }

任何指向正确方向的指针都会很棒。我已经浏览过 C# 接口,但那些似乎包含任务内部的逻辑。

【问题讨论】:

  • 你需要找到这些接口的实现来看看实际发生了什么——一个接口只是定义了一个契约。
  • 您可以获得的最重要/最直接的指针:阅读 C# 教程
  • 接口不包含逻辑,只有实现接口的类必须公开公开的合约或 API。在这种情况下,它是一个正在公开的异步方法。你真的需要找到实现类才能看到真正的逻辑。
  • 如果你熟悉接口,你应该知道,接口基本上只是在说“我要让你做一些特定的事情。”。这个界面说“我将有一个Task 类型的SubmitAsync() 方法”。该方法的实际逻辑将在任何实际实现接口的类中。
  • 对于逻辑,尝试右键单击方法名称->“查看调用层次结构”->“实现”。

标签: c# interface


【解决方案1】:
Visual Studio 中的

F12 转到成员的定义,而不是实现。这就是为什么您被带到接口,而不是实现该接口的类。

如果您想轻松实现,请参阅Is there a way to navigate to real implementation of method behind an interface?

【讨论】:

  • 复制说明就这么难吗?
  • @cFrozenDeath - OP 可能希望避免抄袭现有的 SO 答案。
  • @BSMP 你可以复制答案的相关部分并链接它,以防它因某种原因被删除
  • @cFrozenDeath - 根据我的经验,这样做会删除你的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
  • 2012-09-30
  • 2013-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多