c# – 限制方法只能由特定的类调用
我想要一个类中的特定方法只能被特定的类访问.例如:
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(). 感谢讨论. 解决方法
不,唯一可以做的是将限制访问作为私有方法,并将类B嵌套在类A内.
(我假设你想要在同一个程序集中的所有类,否则你可以将A和B放在同一个程序集中,C可以放在不同的程序集中,并使有限访问作为内部方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |