Как создать правило fxcop, чтобы проверить, что класс вызывает init в своем конструкторе другого класса? - PullRequest
0 голосов
/ 24 апреля 2011

Допустим, у меня есть класс A, который создает экземпляр класса B. В классе B есть конструктор и несколько методов init (реализуется через интерфейс класса). Как написать правило fxcop, чтобы проверить, что по крайней мере один метод init вызывается после создания экземпляра B.

Что если вы загрузите его во время выполнения из Интернета, вы не сможете использовать конструктор, поэтому init.

1 Ответ

1 голос
/ 26 апреля 2011

Такое правило почти невозможно написать, за исключением самых тривиальных случаев. Например, если вы хотите, чтобы метод init init B вызывался сразу после вызова конструктора B, это можно сделать относительно легко (хотя логика ветвления может вызвать проблемы даже там). Тем не менее, не было бы особой необходимости в отдельном методе init, если бы он был необходим только для поддержки такого тривиального использования. Обычно интереснее обнаруживать случаи, когда кто-то пытается сделать что-то еще с экземпляром B, прежде чем вызывать его метод init, и это не совсем работа для статического верификатора, такого как FxCop.

Рассматривали ли вы создание исключения из B, если оно не инициализировано при входе в другой метод (так же, как можно генерировать исключение ObjectDisposedException из удаленного экземпляра)?

...