Запретить экземпляру вызывать общий / статический метод? - PullRequest
1 голос
/ 27 августа 2010

Можно ли запретить экземпляру класса вызывать общий / статический метод?

Например:

Я хочу разрешить это:

ClassName.MethodOne()

Но я хочу запретить это:

Dim A As New ClassName
A.MethodOne()

Причина, по которой это желательно, заключается в том, что в этом случае семантически запутанно, если экземпляр может вызвать метод.

Ответы [ 2 ]

2 голосов
/ 27 августа 2010

Нет, это невозможно в VB.Net. Приведенный выше код выдаст предупреждение (BC42025), но успешно скомпилируется. Единственный сложный вариант - переключать предупреждения на ошибки, и это предотвратит эту проблему.

1 голос
/ 27 августа 2010

Как уже было сказано, это предупреждение по по умолчанию .Но это можно сделать ошибкой.Перейдите в свойства проекта VB.net, затем вкладка «Компиляция», затем «Конфигурации предупреждений»Найдите там «переменная экземпляра доступа к общему члену» и установите для него значение «Ошибка».Теперь он не скомпилируется.

...