如何使用具有私有集的属性实现接口,例如:
public interface IExample{
int Test{private set;get;}
}
public class Example : IExample{
private int _test;
public int Test{
private set{
_test=value;
}
get{
return _test;
}
}
}
我理解为什么它不会编译,因为接口中不允许访问修饰符,但{set; get;}也不起作用。
我尝试过其他一些方法但没有成功,但上面的例子最能说明问题。
答案 0 :(得分:3)
看起来您正在努力确保没有人在您的财产上调用设置者。你可以通过简单地从公共界面中省略它来做到这一点:
public interface IExample{
int Test{get;}
}
public class Example : IExample{
private int _test;
public int Test{
private set{
_test=value;
}
get{
return _test;
}
}
}
答案 1 :(得分:2)
我理解为什么它不会编译,因为接口
中不允许访问修饰符
正确。
interface
无法混淆。实施interface
时,您必须遵守它向您提交的合同。
这意味着如果您在public
定义中已经指定,则必须拥有interface
getter和setter。这是一个想法 - interface
表示实现它的类型的公共合同。
从界面中省略它,你可以随意将任何你想要的东西放在实现类型上。