【问题标题】:interface with internal property与内部属性的接口
【发布时间】:2018-05-08 23:43:21
【问题描述】:

我正在创建一个界面。让我们说以下内容

internal interface MyInterface
{
    string Prop { get; }
}

这是一个内部接口。我打算在项目中使用它,并且不想公开公开Prop。但是,当我尝试将此接口实现到一个类中时,我不得不将Prop 属性公开。当接口本身是内部的并且只能在内部使用时,我不明白为什么我需要公开这个属性。

【问题讨论】:

  • 将接口放在类中,使其成为内部的。在课堂外加入会迫使你公开。
  • @jdweng 它不起作用。不管我把它放在哪里,它仍然是静态的

标签: c# interface properties internal


【解决方案1】:

因为接口本身只是对象的面向公众的功能的契约。任何非公开的东西并不真正属于那里,而是可以继续执行类型。

不过,这基本上不是问题。如果 typeinternal,则该类型的任何属性在该范围之外都是不可见的。因为他们怎么可能?类型本身在该范围之外是未知的。 (任何不知道MyInterface 是什么的代码肯定不会知道MyInterface.Prop 是什么。)

属性是public,因为消费代码可以看到它们。但这仅对可以首先使用该类型的代码很重要,对于该程序集只有internal

【讨论】:

  • 我知道MyInterface.Prop 在它的范围之外是不可见的,这就是我需要的。但是考虑到这一点,为什么该属性无论如何都不能在其范围之外使用时必须是公共的?
  • @NevilleNazerane:因为接口是面向公众的功能的定义。请注意,界面本身并没有定义事物的可见性。因为一切都是公开的。如果一个实现类型将属性标记为public 而另一个实现类型标记为protected,会发生什么?第二个实际上不会实现接口。编译器不允许这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多