FlavoredProjectFactoryBase 类

调味的项目工厂的基类。

继承层次结构

System.Object
  Microsoft.VisualStudio.Shell.Flavor.FlavoredProjectFactoryBase

命名空间:  Microsoft.VisualStudio.Shell.Flavor
程序集:  Microsoft.VisualStudio.Shell.11.0(在 Microsoft.VisualStudio.Shell.11.0.dll 中)

语法

声明
Public MustInherit Class FlavoredProjectFactoryBase _
    Implements IVsAggregatableProjectFactoryCorrected, IVsProjectFactory
public abstract class FlavoredProjectFactoryBase : IVsAggregatableProjectFactoryCorrected, 
    IVsProjectFactory

FlavoredProjectFactoryBase 类型公开以下成员。

构造函数

  名称 说明
公共方法 FlavoredProjectFactoryBase 初始化 FlavoredProjectFactoryBase 的新实例。

页首

属性

  名称 说明
受保护的属性 serviceProvider 获取项目的服务提供程序。

页首

方法

  名称 说明
受保护的方法 CanCreateProject 确定该项是否可以使用所提供的参数创建。
受保护的方法 CreateProject 创建一个项目。
受保护的方法 Dispose 配置服务提供程序。
公共方法 Equals 确定指定的对象是否等于当前对象。 (继承自 Object。)
受保护的方法 Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
公共方法 GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
公共方法 GetType 获取当前实例的 Type。 (继承自 Object。)
受保护的方法 Initialize 初始化项目工厂。
受保护的方法 MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
受保护的方法 PreCreateForOuter 创建项目的实例。
受保护的方法 ProjectTypeGuids 从项目文件将收到项类型 GUID。
公共方法 ToString 返回表示当前对象的字符串。 (继承自 Object。)

页首

显式接口实现

  名称 说明
显式接口实现私有方法 IVsAggregatableProjectFactoryCorrected.GetAggregateProjectType
显式接口实现私有方法 IVsAggregatableProjectFactoryCorrected.PreCreateForOuter
显式接口实现私有方法 IVsProjectFactory.CanCreateProject
显式接口实现私有方法 IVsProjectFactory.Close
显式接口实现私有方法 IVsProjectFactory.CreateProject
显式接口实现私有方法 IVsProjectFactory.SetSite

页首

备注

一个调味的项目工厂的实现由 FlavoredProjectFactory定义的。重写 PreCreateForOuter 方法返回一个新的 FlavoredProjectBase 派生类。派生类 GetGuidProperty 方法可以重模板搜索方向查找此类似的新项目模板。

示例

namespace Microsoft.Samples.VisualStudio.IronPythonProject.WPFProviders
{
    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.None)]
    [Guid("FEBF49B8-D18C-4745-ADE0-35BF632E0533")]
    public class PythonWPFFlavor : FlavoredProjectBase
    {
        public PythonWPFFlavor(IServiceProvider site)
        {
            this.serviceProvider = site;
        }

        protected override Guid GetGuidProperty(uint itemId, int propId)
        {
            if (propId == 
                (int)__VSHPROPID2.VSHPROPID_AddItemTemplatesGuid)
            {
                return typeof(PythonWPFProjectFactory).GUID;
            }
            return base.GetGuidProperty(itemId, propId);
        }

        protected override int GetProperty(uint itemId, int propId, out object property)
        {
            return base.GetProperty(itemId, propId, out property);
        }
    }
    [Guid(PythonWPFProjectFactory.PythonWPFProjectFactoryGuid)]
    public class PythonWPFProjectFactory : FlavoredProjectFactoryBase
    {
        public const string PythonWPFProjectFactoryGuid = "229B3E77-97E9-4f6d-9151-E6D103EA4D4A";

        private IServiceProvider site;
        public PythonWPFProjectFactory(IServiceProvider site) : base()
        {
            this.site = site;
        }

        protected override object PreCreateForOuter(IntPtr outerProjectIUnknown)
        {
            return new PythonWPFFlavor(site);
        }
    }
}

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

请参见

参考

Microsoft.VisualStudio.Shell.Flavor 命名空间