如何在使用接口时实现私人setter?

我已经创build了一些属性的接口。

如果接口不存在,则将该类对象的所有属性设置为

{get; private set; } 

但是,在使用一个接口的时候这是不允许的,那么这个可以实现吗?

在界面中,你只能为你的属性定义getter

 interface IFoo { string Name { get; } } 

然而,在你的课堂上,你可以扩展它有一个private setter

 class Foo : IFoo { public string Name { get; private set; } } 

接口定义公共API。 如果公共API只包含getter,那么你只能在interface中定义getter:

 public interface IBar { int Foo { get; } } 

私人setter不是公共API的一部分(像任何其他私人成员),因此你不能在界面中定义它。 但是你可以自由的添加任何(私人)成员来实现接口。 其实,二传手是公立还是私人,还是二传手:

  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 

Setter不是接口的一部分,所以不能通过你的接口调用:

  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