使用 Visual Studio 显式实现 n 接口
Implementing n interface explicitly using Visual Studio
我在使用 Visual Studio 显式实现 n 接口时遇到了这个问题。所以接口包含属性,但是当我在抽象 class 中显式实现 属性 时,编译器会抛出错误 "The modifier 'public' is not valid for this item".
参考下面给出的代码。
interface ITest
{
bool MyProperty { get; set; }
}
internal class Test : ITest
{
public bool ITest.MyProperty
{
get
{
return false;
}
set { }
}
}
根据 programming guide,显式接口实现总是缺少访问修饰符。您应该删除 public
关键字。
如果你仔细想想,这很有道理。显式接口实现只有一种可能的访问修饰符 - 用于接口的相同修饰符。因此,您无需指定修饰符。
如果接口被标记为public
,而显式实现是private
,那将没有意义。编写显式实现的唯一原因是将该成员仅暴露给该接口。如果成员比接口更难访问,那会很奇怪,对吧?
另一方面,如果接口是internal
,而成员被标记为public
,也没有意义。如果成员比接口更容易访问,那么它不会只暴露给接口。
我在使用 Visual Studio 显式实现 n 接口时遇到了这个问题。所以接口包含属性,但是当我在抽象 class 中显式实现 属性 时,编译器会抛出错误 "The modifier 'public' is not valid for this item".
参考下面给出的代码。
interface ITest
{
bool MyProperty { get; set; }
}
internal class Test : ITest
{
public bool ITest.MyProperty
{
get
{
return false;
}
set { }
}
}
根据 programming guide,显式接口实现总是缺少访问修饰符。您应该删除 public
关键字。
如果你仔细想想,这很有道理。显式接口实现只有一种可能的访问修饰符 - 用于接口的相同修饰符。因此,您无需指定修饰符。
如果接口被标记为public
,而显式实现是private
,那将没有意义。编写显式实现的唯一原因是将该成员仅暴露给该接口。如果成员比接口更难访问,那会很奇怪,对吧?
另一方面,如果接口是internal
,而成员被标记为public
,也没有意义。如果成员比接口更容易访问,那么它不会只暴露给接口。