Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Java vs .Net 
:(
    Опции темы
erm0l0v
Дата 16.3.2012, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: нет
Всего: 1



Ну да будет исключение, что вполне логично.

вы можете отловить исключение с использованием try catch. Но в .NET да как и в Java try catch дорогостоящая операция и если несовпадение параметров случается часто то приложение может работать медленно.

Activator - это не единственный способ создания классов, я привел его в примере только потому что помнил только его, возможно вы сможете найти альтернативные способы создания которые например вместо исключения возвращают null.

Я бы эту ситуацию решил бы так:
Перед созданием класса проверил какие есть конструкторы с какими параметрами.

Для того чтобы получить список конструкторов есть функция класса Type
Код

GetConstructors()


функция возвращает коллекцию объектов класса ConstructorInfo

у этого класса есть функция 
Код

GetParameters() 

которая информацию о параметрах, там много информации включая их тип и порядок объявления в конструкторе.

Из всего выше перечисленного можно определить валидность переданных параметров.
PM MAIL   Вверх
Karadul
Дата 18.3.2012, 05:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: 1
Всего: 1



Цитата(erm0l0v @  16.3.2012,  15:18 Найти цитируемый пост)
вы можете отловить исключение с использованием try catch. 

В статическом языке хотелось бы, чтобы такие вещи отлавливались при компиляции, а не в рантайме. Поэтому такая вещь меня категорически не устраивает. В общем, все то же, что и в яве.
Интересно, почему? Есть какие-то причины, по которым это трудно сделать?
PM MAIL   Вверх
erm0l0v
Дата 19.3.2012, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: нет
Всего: 1



Все что статический анализатор кода может отловить он отловит, при грубой ошибке проект просто не скомпенсируется. Все остальное или очень сложно проверить или невозможно вообще.
В примере который я привел в качестве параметров передаваемых конструктору используется массив. Статическому анализатору будет сложно проверить такую функцию так как сам массив может взяться откуда угодно, да хоть с генерироваться случайным образом.
Да это в принципе и не нужно ведь есть юнит тесты.
PM MAIL   Вверх
techPro
Дата 3.5.2012, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 16.3.2012

Репутация: нет
Всего: 1



Оба этих языка программирования имеют интересную историю, потрясающие возможности и в своем развитии влияют друг на друга. Я думаю, что изучать и использовать стоит оба эти языка
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0623 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.