Ошибка CA2000 относится не к контейнеру, реализующему IDisposable
, а скорее к использованию локального сервера, который неправильно расположен.Причина в том, что вы используете инициализатор объекта для одноразового объекта.Фактический код, который будет сгенерирован, по сути следующий:
Dim temp = New SomethingDisposable()
temp.Name = "hello"
Foo = temp
. Этот код правильно помечен FxCop как неправильное удаление IDisposable
во всех случаях (возможно, исключение может произойти вСтрока 1006 *, в этом случае она не будет уничтожена).
Исправление состоит в том, чтобы не использовать здесь инициализатор объекта и инициализировать Foo
напрямую
Foo = New SomethingDisposable()
Foo.Name = "hello"