如果我想强制用户派生一个接口来实现私有方法/属性,是否有一些技巧?

时间:2010-12-04 23:51:10

标签: c# oop interface access-modifiers

如果我想强制用户派生一个接口来实现一个私有方法,那还有一些技巧吗?

好像我应该能够做一些事情:

namespace cc
{
    interface Icd
    {
        int one { get; private set; }
        int two { get; private set; }
    }
}

我理解为什么这不起作用,毕竟接口是从它派生的对象的保证公共前端,但是,必须有一种方法来强制编码器实现我的接口必须私下实现setter。 / p>

抽象类会在这种情况下起作用吗?我不想定义代码,只强制实现我的接口的人实现属性的私有setter。

修改:是的,这是C#: - )

3 个答案:

答案 0 :(得分:3)

使用抽象基类而不是接口:

public abstract class Foo
{
    public abstract int MyProperty { get; protected set; }
}

答案 1 :(得分:2)

您无法控制该属性的实现。期。强制他们将setter设为私有没有意义,接口的消费者也无法调用它。没有必要宣布一个没有人可以打电话的人,也可以省略它。现在它 工作,没有可以调用的setter。这非常私密。

答案 2 :(得分:2)

如果它是私有的,看起来你真正感兴趣的是一些公司内部的代码编写约定或类似的东西。也许您真正希望看到的是您的版本控制软件会拒绝不符合规则的提交吗?