我查看Excel 2007加载项项目中public abstract class AddInBase : EntryPoint
的定义。默认情况下,此类包含在项目中,因此我无法控制此类。
界面 `
public interface EntryPoint
{
void BeginInit();
void EndInit();
void FinishInitialization();
void Initialize();
void InitializeDataBindings();
void OnShutdown();
void OnStartup();
}
仅包含公共方法。
但AddInBase
的实现包括protected virtual
方法的OnShutdown()
实现:
public abstract class AddInBase : IAddInExtension, IExtension, EntryPoint, ISupportInitialize, IBindableComponent, IComponent, IDisposable
{
///
protected virtual void OnShutdown();
protected virtual void OnStartup();
///
}
这是怎么回事?
感谢您的任何澄清!
答案 0 :(得分:1)
您必须显式实现EntryPoint
接口,因为您已经在使用受保护的方法,所以类AddInBase
必须满足合同EntryPoint
,因此实现了explicitly
示例:
public interface EntryPoint
{
void BeginInit();
void EndInit();
void FinishInitialization();
void Initialize();
void InitializeDataBindings();
void OnShutdown();
void OnStartup();
}
public abstract class AddInBase : EntryPoint
{
void EntryPoint.OnShutdown()
{
OnShutdown();
}
void EntryPoint.OnStartup()
{
OnStartup();
}
protected virtual void OnShutdown()
{
throw new NotImplementedException();
}
protected virtual void OnStartup()
{
throw new NotImplementedException();
}
}