如何在使用接口时实现私人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