Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Динамическая прокся Добавлено: 27.04.04 00:00  

Автор вопроса:  VM

Сгенерил я программно файл с прокси-классом взамен того, который есть в сборке. Заместил файл в директории и теперь не могу понять как его сделать доступным.

Т.е. файл Reference.vb с классом SomeReference.SomeService, который был изначально сгенерирован нажатием Add Web Reference в VS, я заместил своим исправленным Reference.vb с тем же SomeReference.SomeService. Как его теперь программно добавить в сборку и заместить там существовавший до этого класс? Или как иначе сделать так, чтобы при выполнении

Dim ref as SomeReference.SomeService = new SomeReference.SomeService

я получал экземпляр нового класса, а не старого? Куда смотреть? По каким ключевым словам искать во всех ресурсах? Всё, что я находил до сих пор, предлагало "нажать Update Web Reference" и др. штучки из VS, что мне не подходит, т.к. надо сделать это программно.

Спасибо за советы и помощь.

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 VM



Вопросов: 9
Ответов: 19
 Профиль | | #1 Добавлено: 27.04.04 00:19

Добавлю ещё про эффект, который возникает при попытке вызовов методов веб-сервиса:

- первый вызов даёт exception в связи с тем, что внутри прокси-класса неправильный URL (потому что почему-то получен экземпляр старого класса, а не нового, а в старом действительно URL "не тот");

- начиная со второго запуска того же самого кода всё работает абсолютно правильно.

Если кто-то может с этим помочь, то могу предоставить код генерации-компиляции-импортирования прокси.

Ответить

Номер ответа: 2
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #2
Добавлено: 27.04.04 11:34
После замены файла нужно перекомпилировать сборку. Сделал?

Ответить

Номер ответа: 3
Автор ответа:
 VM



Вопросов: 9
Ответов: 19
 Профиль | | #3 Добавлено: 27.04.04 16:59

По всей видимости - нет, не сделал. Ибо не знаю как это сделать программно. Подскажи, пожалуйста. В классе Assembly я не нашёл метода recompile или чего-то наподобие.

Я так и подозревал, что необходима какая-то регистрация или загрузка файла в сборку. Что одной замены файла .vb на новый мало. Но тогда мне непонятно почему начиная со второго запуска я получаю именно экземпляр нового класса, а старый уходит в небытие. Сборка что, автоматически рекомпилится при возникновении exception? :) Нонсенс. :)

И, кстати, вопрос более общего характера, без привязки к проксям. Как программно получить экземпляр класса, записанного в виде исходного кода в файле и не имеющегося в сборке? Что для этого нужно сделать? Тоже не могу найти где бы такое было объяснено.

Спасибо за помощь.

Ответить

Номер ответа: 4
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #4
Добавлено: 28.04.04 10:27
Для этого нужно скомпилировать сборку и потом загрузить её в домен
приложения с помощью Reflection.
Скомпилировать можно с помощью программы vbc.exe, входящей в
Framework.

Ответить

Номер ответа: 5
Автор ответа:
 VM



Вопросов: 9
Ответов: 19
 Профиль | | #5 Добавлено: 28.04.04 20:36

Спасибо. Попробую попозже если понадобится компилировать. (Принцпип войск ПВО - Погоди Выполнять, Отменят - как раз пока никто не отменял). Пока же я разделил процессы автогенерации прокси и собственно само приложение и так, в два шага, всё работает без дополнительной компиляции.

В любом случае спасибо за помощь.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам