public override InitEventArgs GetInitEventArgs(string interfaceName)
        {
            Duo <string [], string []> fields = Fields;

            ParameterInProperty []  pips;
            ParameterOutProperty [] pops;
            if ((fields == null) || (fields.Value1 == null) || (fields.Value1.Length == 0))
            {
                fields = new Duo <string [], string []> (new string [] { interfaceName }, new string [] { interfaceName });
            }
            if (interfaceName == "ICellConsumer")
            {
                return new CellConsumerInitEventArgs()
                       {
                           FieldDisplayName = "ICellConsumer", FieldName = "ICellConsumer"
                       }
            }
            ;
            if (interfaceName == "IFilterConsumer")
            {
                return new FilterConsumerInitEventArgs()
                       {
                           FieldList = fields.Value1, FieldDisplayList = fields.Value2
                       }
            }
            ;
            if (interfaceName == "IParametersInConsumer")
            {
                pips = new ParameterInProperty [fields.Value1.Length];

                for (int i = 0; i < pips.Length; i++)
                {
                    pips [i] = new ParameterInProperty()
                    {
                        Description = ((fields.Value2.Length > i) ? fields.Value2 [i] : fields.Value1 [i]), ParameterDisplayName = ((fields.Value2.Length > i) ? fields.Value2 [i] : fields.Value1 [i]), ParameterName = fields.Value1 [i], Required = false
                    }
                }
                ;
                return(new ParametersInConsumerInitEventArgs()
                {
                    ParameterInProperties = pips
                });
            }
            if (interfaceName == "ICellProvider")
            {
                return new CellProviderInitEventArgs()
                       {
                           FieldName = "ICellProvider", FieldDisplayName = "ICellProvider"
                       }
            }
            ;
            if (interfaceName == "IListProvider")
            {
                return new ListProviderInitEventArgs()
                       {
                           FieldList = fields.Value1, FieldDisplayList = fields.Value2
                       }
            }
            ;
            if (interfaceName == "IParametersOutProvider")
            {
                pops = new ParameterOutProperty [fields.Value1.Length];

                for (int i = 0; i < pops.Length; i++)
                {
                    pops [i] = new ParameterOutProperty()
                    {
                        Description = ((fields.Value2.Length > i) ? fields.Value2 [i] : fields.Value1 [i]), ParameterDisplayName = ((fields.Value2.Length > i) ? fields.Value2 [i] : fields.Value1 [i]), ParameterName = fields.Value1 [i]
                    }
                }
                ;
                return(new ParametersOutProviderInitEventArgs()
                {
                    ParameterOutProperties = pops
                });
            }
            if (interfaceName == "IRowProvider")
            {
                return new RowProviderInitEventArgs()
                       {
                           FieldList = fields.Value1, FieldDisplayList = fields.Value2
                       }
            }
            ;
            return(base.GetInitEventArgs(interfaceName));
        }
        public override InitEventArgs GetInitEventArgs(string interfaceName)
        {
            Duo <string[], string[]> fields = this.Fields;

            if (((fields == null) || (fields.Value1 == null)) || (fields.Value1.Length == 0))
            {
                fields = new Duo <string[], string[]>(new string[] { interfaceName }, new string[] { interfaceName });
            }
            if (interfaceName == "ICellConsumer")
            {
                return(new CellConsumerInitEventArgs {
                    FieldDisplayName = "ICellConsumer", FieldName = "ICellConsumer"
                });
            }
            if (interfaceName == "IFilterConsumer")
            {
                return(new FilterConsumerInitEventArgs {
                    FieldList = fields.Value1, FieldDisplayList = fields.Value2
                });
            }
            if (interfaceName == "IParametersInConsumer")
            {
                ParameterInProperty[] propertyArray = new ParameterInProperty[fields.Value1.Length];
                for (int i = 0; i < propertyArray.Length; i++)
                {
                    propertyArray[i] = new ParameterInProperty {
                        Description = (fields.Value2.Length > i) ? ((string)fields.Value2[i]) : ((string)fields.Value1[i]), ParameterDisplayName = (fields.Value2.Length > i) ? ((string)fields.Value2[i]) : ((string)fields.Value1[i]), ParameterName = fields.Value1[i], Required = false
                    };
                }
                return(new ParametersInConsumerInitEventArgs {
                    ParameterInProperties = propertyArray
                });
            }
            if (interfaceName == "ICellProvider")
            {
                return(new CellProviderInitEventArgs {
                    FieldName = "ICellProvider", FieldDisplayName = "ICellProvider"
                });
            }
            if (interfaceName == "IListProvider")
            {
                return(new ListProviderInitEventArgs {
                    FieldList = fields.Value1, FieldDisplayList = fields.Value2
                });
            }
            if (interfaceName == "IParametersOutProvider")
            {
                ParameterOutProperty[] propertyArray2 = new ParameterOutProperty[fields.Value1.Length];
                for (int j = 0; j < propertyArray2.Length; j++)
                {
                    propertyArray2[j] = new ParameterOutProperty {
                        Description = (fields.Value2.Length > j) ? ((string)fields.Value2[j]) : ((string)fields.Value1[j]), ParameterDisplayName = (fields.Value2.Length > j) ? ((string)fields.Value2[j]) : ((string)fields.Value1[j]), ParameterName = fields.Value1[j]
                    };
                }
                return(new ParametersOutProviderInitEventArgs {
                    ParameterOutProperties = propertyArray2
                });
            }
            if (interfaceName == "IRowProvider")
            {
                return(new RowProviderInitEventArgs {
                    FieldList = fields.Value1, FieldDisplayList = fields.Value2
                });
            }
            return(base.GetInitEventArgs(interfaceName));
        }