AddInBase(Excel)中“公共”接口的“受保护虚拟”实现

时间:2014-04-21 15:44:24

标签: c# excel interface vsto

我查看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();
///
    }

这是怎么回事?

感谢您的任何澄清!

1 个答案:

答案 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();
    }

}