FxCop - CA1034 error - WHY?
c#, fxcop, static-analysis
Solution
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.
Problem
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); } } } } } ```