【问题标题】:Why is "Implement Interface Explicitly" only available sometimes and not also "Implement Interface" (i.e. implicitly)?为什么“显式实现接口”有时只可用,而不是“实现接口”(即隐式)?
【发布时间】:2016-12-05 17:01:01
【问题描述】:

我只是想在已经实现的类上(重新)实现我的接口,因为我向接口添加了一些属性。现有属性是隐式实现的,即我在第一次实现时选择了这个选项:

现在,当我在将新属性添加到接口后重新实现它时,我只能选择显式实现

为什么有时会发生这种情况?在它作为“预期”工作之前,我已经做过很多次了,它总是只是添加缺少的成员实现。

【问题讨论】:

  • @EhsanSajjad -- 我知道。这真的不相关。
  • @Ehsan Sajjad:从这个问题来看,假设他知道显式实现接口的含义可能是安全的。
  • 该死的,现在我不能复制了。我正在尝试编写一个代码示例。如果我找到一个会发布。不过,这些照片不言自明。
  • @BoltClock 我的错误没有很好地阅读问题
  • 检查您是否没有与新接口成员同名的私有或受保护成员。那么它就不能隐式地自动实现,因为那样你将拥有同名的公共和私有成员。

标签: c# .net visual-studio visual-studio-2013


【解决方案1】:

如果选项实际存在,并且它实际上会为隐式实现接口的方法添加存根,那么代码将无法编译,因为您将有两个具有相同签名的方法(因为您已经将接口的方法作为类的方法)。该选项的唯一其他真正明智的行为是,如果它被保留,它将什么都不做(因为已经有一个隐式实现)。

【讨论】:

  • 不正确,我一直这样做。它只是添加了缺失的部分。
  • @rory.ap 你没有丢失的。
  • 我不明白。 OP说他有实现接口的类,然后向接口添加新成员。所以类中缺少这个成员,OP想要实现它。
  • @Evk 操作的代码已经在履行更新接口的接口契约。
猜你喜欢
  • 1970-01-01
  • 2021-06-29
  • 2012-02-24
  • 1970-01-01
  • 2011-05-05
  • 2010-09-29
  • 2013-11-17
相关资源
最近更新 更多