ATMLManagerLibrary.managers.ErrorManager.ExtractErrorProviders C# (CSharp) Method

ExtractErrorProviders() private static method

private static ExtractErrorProviders ( Control control, ICollection errorProviders ) : void
control System.Windows.Forms.Control
errorProviders ICollection
return void
        private static void ExtractErrorProviders(Control control, ICollection<ErrorProvider> errorProviders)
        {
            //use reflection to get to "components" field
            var containerControl = control.GetContainerControl();
            if (containerControl != null)
            {
                FieldInfo componentField = containerControl.GetType()
                                               .GetField( "components", BindingFlags.NonPublic | BindingFlags.Instance );

                if (componentField != null)
                {
                    //get the component collection from field
                    object components = componentField.GetValue(containerControl);
                    if (components != null)
                    {
                        //locate the ErrorProvider within the collection
                        var container = components as IContainer;
                        if (container != null)
                        {
                            foreach (ErrorProvider provider in container.Components.OfType<ErrorProvider>())
                            {
                                if (!errorProviders.Contains( provider ))
                                    errorProviders.Add( provider );
                            }
                        }
                    }
                }
            }
        }