今天要在处理一个问题的时候,查看了一个类的源码,发现其实现了ICallbackEventHandler接口,但是它的方法声明中确是Protected的,很是奇怪,而我发现如果实现一个接口的时候,将接口中的方法声明为Protected是不能编译的.反编的源码原型:
public abstract class ASPxWebControl : ICallbackEventHandler
......省略其它定义
protected virtual string GetCallbackResult();
protected virtual void RaiseCallbackEvent(string eventArgument);
不光是接口的问题,这个虚拟方法没有实现内容也是编译不过去的。
除非将 virtual 换成 abstract
protected virtual string GetCallbackResult();
严重怀疑这个代码是否可以编译通过。
或者你这个代码不是C#的语法,是不是C++的?C++好像允许这样写。
我记得是protected abstract可以重写成public virtual,但是反着来是不行的,编译通过了?具体这个类在哪里?我也反编译一下