![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
erm0l0v |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 11.1.2011 Репутация: нет Всего: 1 |
Ну да будет исключение, что вполне логично.
вы можете отловить исключение с использованием try catch. Но в .NET да как и в Java try catch дорогостоящая операция и если несовпадение параметров случается часто то приложение может работать медленно. Activator - это не единственный способ создания классов, я привел его в примере только потому что помнил только его, возможно вы сможете найти альтернативные способы создания которые например вместо исключения возвращают null. Я бы эту ситуацию решил бы так: Перед созданием класса проверил какие есть конструкторы с какими параметрами. Для того чтобы получить список конструкторов есть функция класса Type
функция возвращает коллекцию объектов класса ConstructorInfo у этого класса есть функция
которая информацию о параметрах, там много информации включая их тип и порядок объявления в конструкторе. Из всего выше перечисленного можно определить валидность переданных параметров. |
||||
|
|||||
Karadul |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: 1 Всего: 1 |
В статическом языке хотелось бы, чтобы такие вещи отлавливались при компиляции, а не в рантайме. Поэтому такая вещь меня категорически не устраивает. В общем, все то же, что и в яве. Интересно, почему? Есть какие-то причины, по которым это трудно сделать? |
|||
|
||||
erm0l0v |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 11.1.2011 Репутация: нет Всего: 1 |
Все что статический анализатор кода может отловить он отловит, при грубой ошибке проект просто не скомпенсируется. Все остальное или очень сложно проверить или невозможно вообще.
В примере который я привел в качестве параметров передаваемых конструктору используется массив. Статическому анализатору будет сложно проверить такую функцию так как сам массив может взяться откуда угодно, да хоть с генерироваться случайным образом. Да это в принципе и не нужно ведь есть юнит тесты. |
|||
|
||||
techPro |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 16.3.2012 Репутация: нет Всего: 1 |
Оба этих языка программирования имеют интересную историю, потрясающие возможности и в своем развитии влияют друг на друга. Я думаю, что изучать и использовать стоит оба эти языка
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |