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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C# - является ли класс библиотечным 
:(
    Опции темы
csprogrammer
Дата 3.4.2006, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Занимаюсь анализом сборок. Использую Reflection.Assembly. Составляю список описанных классов при помощи GetTypes(). Хотелось бы, для каждого класса, узнать, является ли его BaseType библиотечным классом или нет. Возможно ли это?

P.S. Под библиотечными классами подразумеваются стандартные классы .NET

smile
PM MAIL   Вверх
Exception
Дата 3.4.2006, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ну, смотри его BaseType.Assembly и проверяй имя библиотеки...
PM   Вверх
csprogrammer
Дата 3.4.2006, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Была у меня такая мысль. Тока к сожалению там кроме mscorlib ещё куча всяких библиотек. Я так понял каждый namespace это отдельный assembly. Что же мне теперь составлять список всех namespace? smile
PM MAIL   Вверх
Exception
Дата 3.4.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Нет, не каждый. Библиотек там всего штук 15. Несколько по памяти -- mscorlib.dll, System.dll, System.Windows.Forms.dll, System.Web.dll, Microsoft.VisualBasic.dll, System.Data.dll, больше не помню smile . Но их не так уж и много.
PM   Вверх
Дрон
Дата 3.4.2006, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

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



Ну а нельзя ли получить полное имя библиотеки и проверить, не лежит ли она в одной из подпапок %WINDIR%\Microsoft.NET\Framework ?



--------------------
Да. Именно так.
PM   Вверх
csprogrammer
Дата 3.4.2006, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



2 Exception: Спасибо. Думаю на этом варианте и надо будет остановиться. Действительно стандартных библиотечных файлов не так уж их и много. Правда с каждой новой версией framework список придётся пересматривать. Я бы конечно предпочёл иметь какой-нить атрибут Standard или что либо в этом роде, но увы такого нет.

2 Дрон: А программер если захочет туда разве свою библиотеку положить не сможет?
PM MAIL   Вверх
Дрон
Дата 3.4.2006, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

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



Цитата(csprogrammer @ 3.4.2006, 17:24 Найти цитируемый пост)
А программер если захочет туда разве свою библиотеку положить не сможет?

Может. Но зачем?
А вообще да, получается что надо хранить список.

Цитата(csprogrammer @ 3.4.2006, 17:24 Найти цитируемый пост)
Я бы конечно предпочёл иметь какой-нить атрибут Standard или что либо в этом роде, но увы такого нет.

А нет его потому, что это не имеет никакого смысла smile
Какая в итоге разница -- стандартная это библиотека или нет?


--------------------
Да. Именно так.
PM   Вверх
csprogrammer
Дата 3.4.2006, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Боюсь свалиться в офтопик, но в кратце так: кому то разницы никакой, а кому то есть. Хочу проанализировать зачем класс может быть использован. Для этого неплохо иерархию просмотреть. Но не всю, а до того момента где начинаются стандартные классы, их то анализировать не надо, с ними и так всё ясно.
PM MAIL   Вверх
Дрон
Дата 3.4.2006, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

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



Цитата(csprogrammer @ 3.4.2006, 17:41 Найти цитируемый пост)
Боюсь свалиться в офтопик, но в кратце так: кому то разницы никакой, а кому то есть

Я просто имел ввиду, что между ними нет разницы в смысле реализации и использования. Т.е. технически ты НИКАК не отличишь стандартный класс от своего собственного.
Да, разработчики могли бы ввести какой-то специальный атрибут, чтобы отмечать стандартные классы. Но опять же зачем?
В любом случае при использовании какого-то класса ты не заметишь разницы между ними.

ЗЫ: А насчёт того, что "кому-то есть"... То тут я согласен -- есть. Например при профилировании приложения нет большого смысла рассматривать внутренности стандартных классов.


--------------------
Да. Именно так.
PM   Вверх
mr.DUDA
Дата 3.4.2006, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Цитата(csprogrammer @ 3.4.2006, 15:41 Найти цитируемый пост)
Боюсь свалиться в офтопик, но в кратце так: кому то разницы никакой, а кому то есть. Хочу проанализировать зачем класс может быть использован. Для этого неплохо иерархию просмотреть. Но не всю, а до того момента где начинаются стандартные классы, их то анализировать не надо, с ними и так всё ясно.

Дык, это... А в чём проблема ? Смотрим атрибуты аssembly, в частности AssemblyCompany, если находим строку "Microsoft Corporation" - значитцо это системная сборка, и любой класс в ней - системный (aka стандартный).


--------------------
user posted image
PM MAIL WWW   Вверх
csprogrammer
Дата 4.4.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



2 Дрон:
Цитата

Я просто имел ввиду, что между ними нет разницы в смысле реализации и использования. Т.е. технически ты НИКАК не отличишь стандартный класс от своего собственного.
Да, разработчики могли бы ввести какой-то специальный атрибут, чтобы отмечать стандартные классы. Но опять же зачем?
В любом случае при использовании какого-то класса ты не заметишь разницы между ними.


Ды вот в том то вся и проблема, что между ними разницы никакой! Была бы между ними какая-нить разница я бы не спрашивал как их друг от друга отличить smile

2 mr.DUDA:
Благодарю за ещё один способ решения проблемы, но боюсь мне он не подойдёт. Для любого assembly можно сделать следующее:
Project->Project Properties->Assembly Information и дальше указать любое значение атрибута AssemblyCompany. А мне принципиально важно чтобы мой assembly анализатор было не так просто одурачить.

Я даже уже наверное сам запутался чего бы я хотел, т.к. я сам про атрибут заикнулся:
Цитата

Я бы конечно предпочёл иметь какой-нить атрибут Standard или что либо в этом роде, но увы такого нет.


PM MAIL   Вверх
Exception
Дата 4.4.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



mr.DUDA, ни-ни smile . Сюда подойдут любые библиотеки микрософта, а не только фреймворк.
PM   Вверх
mr.DUDA
Дата 4.4.2006, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Цитата(csprogrammer @ 4.4.2006, 12:35 Найти цитируемый пост)
Благодарю за ещё один способ решения проблемы, но боюсь мне он не подойдёт. Для любого assembly можно сделать следующее:
Project->Project Properties->Assembly Information и дальше указать любое значение атрибута AssemblyCompany. А мне принципиально важно чтобы мой assembly анализатор было не так просто одурачить.

Можно попробовать подписку поюзать. Все эти assembly подписаны одним ключом.


--------------------
user posted image
PM MAIL WWW   Вверх
Exception
Дата 4.4.2006, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(mr.DUDA @ 4.4.2006, 17:25 Найти цитируемый пост)
Можно попробовать подписку поюзать. Все эти assembly подписаны одним ключом.


Цитата(Exception @ 4.4.2006, 15:11 Найти цитируемый пост)
Сюда подойдут любые библиотеки микрософта, а не только фреймворк.


PM   Вверх
csprogrammer
Дата 4.4.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ваще мне в данном случае главное не анализировать то к чему есть документация. Так что можт это даже и хорошо что не только фреймворковские библиотеки будут определяться. А не подскажете что за зверь подписка и где про неё почитать?
Добавлено @ 17:50
А, понял, это в смысле то чем занимается утилита signtool.exe. Спасибо попробую.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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