Пример #1
0
        /// <summary>
        /// Creates the interface.
        /// </summary>
        /// <param name="instance">The instance.</param>
        /// <returns>The interface.</returns>
        public static CodeInterface CreateInterface(this ProjectItem instance)
        {
            string interfaceName = string.Format("I{0}", instance.Name);
            string path          = instance.FileNames[1].Replace(instance.Name, interfaceName);

            CodeNamespace codeNamespace = instance.GetNameSpace();

            string nameSpace = codeNamespace.FullName;

            object[] bases = { };

            CodeNamespace interfaceNameSpace = instance.ProjectItems.ContainingProject.CodeModel.AddNamespace(
                nameSpace, path);

            CodeInterface codeInterface = interfaceNameSpace.AddInterface(
                interfaceName, -1, bases, vsCMAccess.vsCMAccessPublic);

            CodeClass codeClass = instance.GetFirstClass();

            if (codeClass != null)
            {
                object interfaceClass = interfaceName;
                codeClass.AddImplementedInterface(interfaceClass, 0);
            }

            return(codeInterface);
        }
Пример #2
0
        void DumpCodeModel(Project project)
        {
            MessageBox.Show("Attach to process now", "Debug");
            ProjectItem   item      = project.ProjectItems.Item("Driver.cs");
            FileCodeModel fcm       = item.FileCodeModel;
            CodeClass     codeClass = (CodeClass2)fcm.CodeElements.Item(DeviceClass);

            // Implement the I<DeviceClass> interface on the driver class. Does not insert method stubs.
            codeClass.AddImplementedInterface("ASCOM.Interface.I" + DeviceClass, 0);
        }
Пример #3
0
        /// <summary>
        /// 当前项目item中添加引用接口
        /// </summary>
        /// <param name="curItem"></param>
        private void addInterface(ProjectItem curItem)
        {
            FileCodeModel fileCode     = curItem.FileCodeModel;
            string        strClsName   = curItem.Name.Substring(0, curItem.Name.Length - 3);
            var           lstNamespace = fileCode.CodeElements.Cast <CodeElement>().ToList().SingleOrDefault(x => x.Kind == vsCMElement.vsCMElementNamespace);

            if (lstNamespace != null)
            {
                CodeClass service = (CodeClass2)((EnvDTE.CodeNamespace)(lstNamespace)).Members.Item(strClsName);

                try
                {
                    var s = service.ImplementedInterfaces.Item("I" + strClsName);
                }
                catch (Exception)
                {
                    service.AddImplementedInterface("I" + strClsName);
                }
            }
        }