繁体   English   中英

C#仅对相同接口的类公开

[英]C# public only for classes of the same interface

我可以只对相同的接口类公开某些属性,而对所有其他类只读吗?

您可以使用显式实现,例如:

interface IFoo {
    int Value { get; set; }
}

public class Foo : IFoo {
    public int Value { get; private set; }

    int IFoo.Value {
        get { return Value; }
        set { Value = value; }
    }
}

通过Foo访问时,只有get才可以访问; 通过IFoo访问时,getter和setter都将可访问。

有什么用吗

接口就像类合同一样。 它不会更改可访问性级别。

如果某个班级的成员是公开的,则它对所有可以访问该班级的班级都是公开的。 您可以拥有的唯一限制是使用internalprotected internal使成员对同一程序protected定义的类公开,并protected使成员对从该类派生的类公开。

除了接口,您还可以创建一个抽象基类并使成员受到保护:

public interface IFoo
{
    int Value { get; set; }
}

public abstract class FooBase : IFoo
{
    public abstract int Value { get; set; }

    protected void ProtectedMethod()
    {
    }
}

public class Foo : FooBase
{
    public int Value { get; set; }
}

但是,您不能定义实现特定接口的类可访问的成员。 没有像public-to-IFoo-otherwise-private这样的访问修饰符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM