Я читаю C# код, сгенерированный платформой Microsoft Visual Studio Tools for Office (VSTO), и столкнулся с делом, которое я не понимаю. Я упростил его следующим образом (я пропустил параметры метода):
public interface Tools.Factory
{
RibbonFactory GetRibbonFactory(); // OK
AddIn CreateAddIn(...); // Missing
CustomTaskPaneCollection CreateCustomTaskPaneCollection(...); // Missing
SmartTagCollection CreateSmartTagCollection(...); // Missing
}
public interface ApplicationFactory : Tools.Factory
{
SmartTag CreateSmartTag(...); // OK
Action CreateAction(...); // OK
Document GetVstoObject(...); // OK
bool HasVstoObject(...); // OK
}
public ThisAddIn(ApplicationFactory factory, IServiceProvider serviceProvider) :
base(factory, serviceProvider, "AddIn", "ThisAddIn")
{
Globals.Factory = factory;
}
Конструктор ThisAddIn
- это код, автоматически генерируемый VSTO, который находится в файле designer.cs. Передается аргумент (factory
), который реализует интерфейс ApplicationFactory
. Используя F12, я выследил интерфейс, как показано на рисунке. Этот интерфейс, в свою очередь, наследует интерфейс Tools.Factory
, который я также перечислил.
Чего я не понимаю: когда я запускаю IntelliSense в редакторе для переменной Globals.Factory
(показанной ниже), я только см. пять из восьми методов, перечисленных в двух интерфейсах (прокомментировано как ОК в листинге кода). Реализации трех методов из интерфейса Tools.Factory
отсутствуют (прокомментированы как отсутствующие в листинге кода). Почему это так?
Примечание. Код работает нормально.