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); }
/// <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); } } }