[英]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都将可访问。
有什么用吗
接口就像类合同一样。 它不会更改可访问性级别。
如果某个班级的成员是公开的,则它对所有可以访问该班级的班级都是公开的。 您可以拥有的唯一限制是使用internal
或protected
。 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.