我想要一个类中的特定方法只能被特定的类访问.例如:
public class A { public void LimitedAccess() {} public void FullAccess() {} } public class B { public void Func() { A a = new A(); a.LimitedAccess(); // want to be able to call this only from class B } } public class C { public void Func() { A a = new A(); a.FullAccess(); // want to be able to call this method a.LimitedAccess(); // but want this to fail compile } }
是否有一个关键字或属性可以用来强制执行此操作?
更新:
由于现有的系统复杂性和时间限制,我需要一个低影响的解决方案.而且我希望在编译时指出有限访问()不能被使用.我相信Jon Skeet的答案,正是我所要求的,在C#中是无法做到的.
问题和乔恩的答案对那些可能会在后面遇到的人有好处.事实上,这种设计闻起来可以希望可以让任何人离开,选择这样的东西作为所需的解决方案.
如评论中所提到的,如果您正在尝试解决类似的情况,那么C# friend会话就很有用.
对于我的具体解决方案:“为什么A包含B的逻辑”(@sysexpand在评论中提出).那是擦B.Func()在整个系统中被调用,但它主要是在一个单一的A.所以我最后做的是将B的Func()移动到A中,并使A.LimitedAccess()私有.还有一些其他的细节可以解决,因为一直有,但是我有一个低影响的解决方案,给我的编译时错误的呼叫者到A.LimitedAccess().
感谢讨论.