我想在我的派生类中限制基类方法的访问.这可能吗?
class Class1 { protected virtual void Method() { } } class Class2 : Class1 { protected override void Method() { base.Method(); } } class Class3 : Class2 { public Class3() { //I want to restrict to use this method in this class alone this.Method(); } }
但它必须从基类派生.
这在我的采访中被问及我的朋友也在其他一些采访中被问到.但他们告诉我们可以限制这一点.
你要问的是,正如其他答案所指出的那样,在C#中是不可能的.所以,一些假设:
采访者错误地认为这是可能的.
采访者知道这是不可能的,想知道你是否知道这一点.
面试官在提问时表现不佳; 他们试图提出的问题与你在这里提出的问题不同.
面试官知道这是不可能的,但想看看你是否可以提出探究性问题 - 比如"你为什么要这样做?" - 为了看看你是否是那种专注于技术问题的人,或者你是否真的试图找出用户驱动的编写软件的理由.
如果我提出这个问题,我会推回"所以你告诉我的是你设计了一个类层次结构,其方法非常破碎,只有某些类可以正确使用它,并且只能使用它对于那些类,对吗? 不要设计那样的方法.问题不应该是如何阻止我的同事和客户使用这种设计糟糕的方法.问题应该是如何修复方法以使其对每个人都有用. "