コード例 #1
0
ファイル: Host.cs プロジェクト: rageappliedgame/RQAT
        /// <summary>
        /// Plugins for file type.
        /// </summary>
        ///
        /// <param name="type"> The type. </param>
        ///
        /// <returns>
        /// A List&lt;IPlugin&gt;
        /// </returns>
        public List <IPlugin> PluginsForFileType(FileType type)
        {
            List <IPlugin> result = new List <IPlugin>();

            if (type.IsFlagSet(FileType.Solution))
            {
#if MEF
                result.AddRange(container.GetExportedValues <ISolutionPlugin>());
#else
                result.AddRange(container.MultiResolve <IPlugin, ISolutionPlugin>());
#endif
            }
            if (type.IsFlagSet(FileType.Project))
            {
#if MEF
                result.AddRange(container.GetExportedValues <IProjectPlugin>());
#else
                result.AddRange(container.MultiResolve <IPlugin, IProjectPlugin>());
#endif
            }
            if (type.IsFlagSet(FileType.Assembly))
            {
#if MEF
                result.AddRange(container.GetExportedValues <IAssemblyPlugin>());
#else
                result.AddRange(container.MultiResolve <IPlugin, IAssemblyPlugin>());
#endif
            }
            if (type.IsFlagSet(FileType.UnitTest))
            {
#if MEF
                result.AddRange(container.GetExportedValues <ITestPlugin>());
#else
                result.AddRange(container.MultiResolve <IPlugin, ITestPlugin>());
#endif
            }
            if (type.IsFlagSet(FileType.Executable))
            {
#if MEF
                result.AddRange(container.GetExportedValues <IExecutablePlugin>());
#else
                result.AddRange(container.MultiResolve <IPlugin, ITestPlugin>());
#endif
            }

            return(result);
        }