Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FxCop - CA1034 error - WHY?

I am running static code analysis with FxCop 1.36 and I keep getting warning CA1034: NestedTypesShouldNotBeVisible.

I would understand if the parent class were declared as internal or private, but it is public. Why would it be bad for TimerReset to be declared public?

Am I missing something, or is this something that can be ignored?

Thanks for any input!

Here is an excerpt of the code causing this warning:

namespace Company.App.Thing
{
    public partial class Page : XtraPage
    {
        public delegate void TimerResetDelegate(object sender, EventArgs e);
        private TimerResetDelegate _timerReset;

        public Page()
        {
            InitializeComponent();
        }

        public TimerResetDelegate TimerReset
        {
            set
            {
                if (null != (_timerReset = value))
                {
                    checkBox.Click += new EventHandler(_timerReset);
                    textField.Click += new EventHandler(_timerReset);
                    textField.KeyDown += new KeyEventHandler(_timerReset);
                    TimeField.Click += new EventHandler(_timerReset);
                    TimeField.KeyDown += new KeyEventHandler(_timerReset);
                }
            }
        }
    }
}
like image 865
Tim Avatar asked Dec 30 '22 19:12

Tim


1 Answers

Generally speaking, Nested Types are harder to 'discover'.

E.g. To use your nested type, I will have to write following

Page.TimerResetDelegate timer = new Page.TimerResetDelegate();

Even though above is valid C# code, it doesn't read like the usual type usage.

Nested Types are generally used when you want to define a type to be used internally and you would avoid code like above. This is the reason why FxCop is giving you warning. If you want, you can ignore it. Personally, I would keep my Nested types as private. If I expect caller to make use of the type, I will move them to a proper namespace.

like image 125
SolutionYogi Avatar answered Jan 14 '23 04:01

SolutionYogi