示例#1
0
        public PluginContainer(
            IInternalPluginHost pluginHost,
            IORegistry ioRegistry,
            CompositionContainer parentContainer,
            Type pluginType,
            INodeInfo nodeInfo
            )
        {
            FIOFactory = new IOFactory(pluginHost, ioRegistry);

            var catalog            = new TypeCatalog(pluginType);
            var ioExportProvider   = new IOExportProvider(FIOFactory);
            var hostExportProvider = new HostExportProvider()
            {
                PluginHost = pluginHost
            };
            var exportProviders = new ExportProvider[] { hostExportProvider, ioExportProvider, parentContainer };

            FContainer = new CompositionContainer(catalog, exportProviders);
            FContainer.ComposeParts(this);
            FPlugin = PluginBase as IPluginEvaluate;

            FAutoEvaluate = nodeInfo.AutoEvaluate;
            FIOFactory.OnCreated(EventArgs.Empty);
        }
示例#2
0
 /// <summary>
 /// Convenience function to set the slicecount of all output pins at once defined in the plugin class
 /// </summary>
 /// <param name="node">Current node</param>
 /// <param name="sc">Slicecount</param>
 /// <param name="ignore">Ignore pins via their Member names (NOT pin names!)</param>
 /// <param name="pinSet">Optional hashset to save the list of spreads to</param>
 public static void SetSliceCountForAllOutput(this IPluginEvaluate node, int sc, string[] ignore = null, HashSet <NGISpread> pinSet = null)
 {
     foreach (var field in node.GetType().GetFields())
     {
         if (ignore != null)
         {
             if (ignore.Contains(field.Name))
             {
                 continue;
             }
         }
         if (field.GetCustomAttributes(typeof(OutputAttribute), false).Length == 0)
         {
             continue;
         }
         var spread = (NGISpread)field.GetValue(node);
         spread.SliceCount = sc;
         if (pinSet == null)
         {
             continue;
         }
         if (!pinSet.Contains(spread))
         {
             pinSet.Add(spread);
         }
     }
 }