Конструкторы и бросающие исключения - PullRequest
2 голосов
/ 04 декабря 2011

Это лучший способ прервать создание экземпляра объекта, если его параметры не переданы с действительными данными?

protected Command(string commandKey)
{
    if(commandKey == null) throw new ArgumentNullException("commandKey", "Command Key cannot be null as it is required internally by Command");
    if(commandKey == "") throw new ArgumentException("Command Key cannot be an empty string");
    CommandKey = commandKey;
}

Ответы [ 5 ]

1 голос
/ 04 декабря 2011

Да. Обычной практикой является проверка аргументов в конструкторах и создание исключения, если они недействительны.

0 голосов
/ 04 декабря 2011

Прекрасно, если вы проверите внутри конструктора и выбросите исключение, если что-то пойдет не так.

0 голосов
/ 04 декабря 2011

Это именно то, что делает Microsoft, если вы просматриваете исходный код фреймворка, поэтому я подозреваю, что он совершенно действителен.

0 голосов
/ 04 декабря 2011

В этом случае вы можете использовать статический метод string.IsNullOrEmpty (commandKey):

protected Command(string commandKey) 
{ 
    if(string.IsNullOrEmpty(commandKey))
        throw new ArgumentException("commandKey");
    //something
} 
0 голосов
/ 04 декабря 2011

Это прекрасно. Конструкторы ничего не возвращают, так как еще вы узнали бы, что что-то пошло не так? Вы можете иметь bool для установки его в неинициализированное состояние, но я бы пошел с исключениями.

Также:

if(String.IsNullOrEmpty(commandKey)) //throw exectpion
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...