Метод интерфейса отсутствует в базовом классе ... COM? - PullRequest
0 голосов
/ 10 ноября 2018

Я работаю с сборками EnvDTE от Microsoft и заметил, что методы / свойства, уникальные для новейших интерфейсов, не включены в базовый тип. Например, метод AddFromTemplateEx .

DTE dte = (DTE) ((IServiceProvider) Host).GetCOMService(typeof(DTE));
Solution4 solution = (Solution4)dte.Solution; //Solution4 is an interface
WriteLine(solution.GetType().FullName);

Вышеприведенный код записывает:

EnvDTE.SolutionClass

Тем не менее EnvDTE.SolutionClass не содержит реализацию AddFromTemplateEx (). Я в замешательстве, потому что я все еще могу использовать методы из интерфейса Solution4, но я не понимаю, как, если они не реализованы в SolutionClass.

Какая магия здесь происходит? SolutionClass - это MarshaledbyRef, его базовый тип - System._ComObject ... Это как-то связано с реализациями интерфейса, существующими в базовом COM-объекте, а не в базовом типе?

...