当我使用Visual Studio显式实现n接口时,我遇到了这个问题。因此接口包含属性,但是当我在抽象类中显式实现该属性时,Compiler会抛出错误“修饰符'public'对此项无效”。
参考下面给出的代码。
interface ITest
{
bool MyProperty { get; set; }
}
internal class Test : ITest
{
public bool ITest.MyProperty
{
get
{
return false;
}
set { }
}
}
答案 0 :(得分:0)
根据programming guide,显式接口实现始终缺少访问修饰符。您应该删除public
关键字。
如果你考虑一下,这很有道理。显式接口实现只有一个可能的访问修饰符 - 用于接口的相同修饰符。因此,您无需指定修饰符。
如果界面标记为public
,并且显式实现为private
,则无效。编写显式实现的唯一原因是将该成员公开给该接口。如果成员的界面不如界面那么可能会很奇怪,对吗?
另一方面,如果界面为internal
且成员标记为public
,则它也没有意义。如果该成员比界面更易于访问,则它不会仅暴露给界面。