使用私有集实现属性

时间:2014-06-05 03:37:53

标签: c# class interface

如何使用具有私有集的属性实现接口,例如:

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;}也不起作用。

我尝试过其他一些方法但没有成功,但上面的例子最能说明问题。

2 个答案:

答案 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表示实现它的类型的公共合同

从界面中省略它,你可以随意将任何你想要的东西放在实现类型上。