【问题标题】:Is there a way to have a private class method inherit from a public interface method? [duplicate]有没有办法让私有类方法继承自公共接口方法? [复制]
【发布时间】:2014-07-03 18:03:10
【问题描述】:

我想要这样的东西:

public interface IBlah
{
   void setBlah();
   float calculateBlahVelocity();
}


public class Blah : IBlah
{
   private void setBlah() { /** .... **/ }
   public float calculateBlahVelocity { /** .... **/ }
}

但 C# 似乎不喜欢这样。那么有没有[其他] 方法来获得这种功能?

【问题讨论】:

  • 为什么?任何实现接口的东西本质上都是可访问的。 (但请参阅显式接口实现,并注意强制转换)
  • @SLaks - 如果有一种方法或另一种方法可以做到这一点(即不使用接口),我很高兴知道它。只是为了更清楚。

标签: c# asp.net class interface


【解决方案1】:

完全正确。如果Blah 实现了IBlah,那么它必须有一个setBlah 方法。

可以,但是,显式实现该方法,这会强制调用者通过IBlah接口使用该方法: p>

public class Blah : IBlah
{
   void IBlah.setBlah() { /** .... **/ }
   public float calculateBlahVelocity() { /** .... **/ }
}

然后需要通过接口调用方法:

Blah b = new Blah();
b.setBlah();  // invalid
IBlah i = b;
i.setBlah();  // valid

【讨论】:

  • 这是正确的答案,需要注意的是,显式实现是私有的,答案被忽略了。
猜你喜欢
  • 2015-03-07
  • 2019-09-10
  • 2014-11-24
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多