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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с dll, Подскажите плииз 
:(
    Опции темы
max-anikin
Дата 23.11.2004, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Каким образом можно добраться до интерфейса который есть в dll не подключая эту библиотечку в проект ... ???

Или подскажите каким образом можно получить зарегестрированные MimeType-ы на сервере ...
Я вот тут написал функцию - которая использует интерфейс из Interop.IISOle.dll но мне крайне нежелательно включать эту dll в проект может можно как-то программно получить этот интерфейс "IISOle.MimeMap" ???
public string GetMimeType(string Extension)
{
string MimeType = String.Empty;
DirectoryEntry MimeRoot = new DirectoryEntry("IIS://LocalHost/MimeMap");
for(int i=0; i<MimeRoot.Properties["MimeMap"].Count; i++)
{
if(String.Compare(Extension.ToLower(), ((IISOle.MimeMap)MimeRoot.Properties["MimeMap"][i]. Extension)==0)
{
MimeType = ((IISOle.MimeMap)MimeRoot.Properties["MimeMap"][i]).MimeType;
break;
}
}
return MimeType;
}

Заранее благодарен за подробные разъяснения smile

Это сообщение отредактировал(а) max-anikin - 23.11.2004, 15:54
PM MAIL ICQ   Вверх
[Last]Wizard
Дата 23.11.2004, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 20.7.2004
Где: Минск, Беларусь

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



Можно получить доступ к сборке не включая её в проект с помощью System.Reflection.

Общая суть такова:

1. Нужно загрузить метаданные самой сборки с помощью Assembly.Load()
Код
Assembly a = Assembly.Load(@"C:\MyPath\Interop.IISOle.dll");

2. Найти нужный тип (интерфейс)
Код
Type mimeMapType = a.GetType("MimeMap");

3. Вызвать нужный метод (свойство)
Код
PropertyInfo prop = mimeMapType.GetProperty("Extension");
// Здесь возвращается тип object
object mime = MimeRoot.Properties["MimeMap"][i];
string ext = (string)prop.GetValue(mime, new object[]{});


Одна тонкость - MimeRoot.Properties["MimeMap"][i] должен возвращать object, который на самом деле является экземпляром IISOle.MimeMap. Делается это так (пункты 1 и 2 см. выше):
Код
// если конструктор с параметрами - передаем их типы
ConstructorInfo constr = mimeMapType.GetConstructor(new Type[] {});
// Здесь - значения параметров конструктора
object mime = constr.Invoke(new object[]{});

PM ICQ   Вверх
max-anikin
Дата 23.11.2004, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Огромное спасибо smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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