В реализации интерфейса для класса VSTO Aplication.Factory отсутствуют методы - PullRequest
0 голосов
/ 07 марта 2020

Я читаю 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 отсутствуют (прокомментированы как отсутствующие в листинге кода). Почему это так?

enter image description here

Примечание. Код работает нормально.

1 Ответ

1 голос
/ 07 марта 2020

Существуют такие атрибуты, как EditorBrowsable, которые могут скрывать методы и свойства как от разработчика, так и от IntelliSense.

В этом случае упомянутые методы существуют и их можно вызывать, но они скрыты.

...