Answers:
在界面中,您只能定义getter
您的媒体资源
interface IFoo
{
string Name { get; }
}
不过,您可以在课堂上将其扩展为private setter
-
class Foo : IFoo
{
public string Name
{
get;
private set;
}
}
接口定义公共API。如果公共API仅包含getter,则可以在接口中仅定义getter:
public interface IBar
{
int Foo { get; }
}
私有设置器不是公共api的一部分(与任何其他私有成员一样),因此您不能在接口中定义它。但是您可以自由地将任何(私有)成员添加到接口实现中。实际上,将setter实施为公共还是私有都没有关系,或者是否存在setter:
public int Foo { get; set; } // public
public int Foo { get; private set; } // private
public int Foo
{
get { return _foo; } // no setter
}
public void Poop(); // this member also not part of interface
设置器不是接口的一部分,因此无法通过您的接口调用:
IBar bar = new Bar();
bar.Foo = 42; // will not work thus setter is not defined in interface
bar.Poop(); // will not work thus Poop is not defined in interface