我已经创建了一个具有一些属性的接口。
如果接口不存在,则类对象的所有属性都将设置为
{ get; private set; }
但是,在使用接口时,这是不允许的,所以这可以实现吗?如果可以,如何实现?
发布于 2013-08-15 17:37:07
在接口中,您只能为属性定义getter
interface IFoo
{
string Name { get; }
}
但是,在您的类中,您可以将其扩展为具有private setter
-
class Foo : IFoo
{
public string Name
{
get;
private set;
}
}
发布于 2013-08-15 17:38:41
接口定义了公共API。如果公共API仅包含getter,则仅在接口中定义getter:
public interface IBar
{
int Foo { get; }
}
私有setter不是公共api的一部分(和其他私有成员一样),因此您不能在接口中定义它。但是您可以自由地向接口实现添加任何(私有)成员。实际上,setter将被实现为public还是private,或者是否会有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
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
https://stackoverflow.com/questions/18249981
复制相似问题