Can I make some properties public only to same interface classes and readonly to all other classes?
问问题
76 次
2 回答
6
您可以使用显式实现,例如:
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 访问时将可以访问。
有什么用?
于 2013-10-26T13:19:14.897 回答
0
接口就像类的契约一样。它不会改变可访问性级别。
如果一个类的成员是公共的,那么它对所有可以访问该类的类都是公共的。您可以拥有的唯一限制是使用internal
or protected
。internal
使成员对在同一程序集中定义的类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
.
于 2013-10-26T14:50:58.833 回答