![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: 1 Всего: 2 |
Есть абстарктный класс, который вынесен в отдельную сборку.
Вэб-служба имеет ссылку на эту сборку и в ряде методов использует этот тип, например возврат в методе. Оснонвое приложение тоже имеет ссылку на сборку с абстрактным классом и использует этотт тип. И тут происходит проблема. Когда я из приложения вызываю метод службы, который возвращает объект типа того абстарктного класса, то выскакивает сообщение, что происходит неявное переопределение типа. Суть по ходу в том, что среда считает, что класс в службе и класс в основном приложении - это два разных класса. Вопрос, почему и как это побороть? Пробовал полазить в настрйоках вэб-сслыки, сообенно приглянулся мне параметр "Повторно использовать типы в сборках, на которые есть ссылки" Не помогло Пробовал подключать не как ссылку на выэ-службу, а именно вэб-службу, все равно не помогло. Пробовал альясы, все арвно выскакивает предупреждение о том, что неоднозначное имя типа. Можно в этом случае писать полные пространства имен, но мне кажется при исполнении будет экзепшн. --------------------
Еще один вопрос ... |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
NikeDeForest, для web reference решается написанием своего SchemaImporterExtension (http://www.microsoft.com/belux/msdn/nl/community/columns/jdruyts/wsproxy.mspx)
Если нет серьезных причин использовать именно старые asmx web services, то проще перейти на WCF, в нем такой проблемы нет. |
|||
|
||||
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: 1 Всего: 2 |
, еще неделю назад я бы ответил, что Моно препячтствует. Но на этой неделе было принято решение соскочить с него, так что с удовольствие м воспользуюсь советом по поволу WCF. Спасибо.
--------------------
Еще один вопрос ... |
|||
|
||||
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: 1 Всего: 2 |
Вы знаете, в WCF со временем приходишь к тому же.
Есть сборка, в которой определн класс, он является контрактом данных для службы, т.е. служба ссылается на эту сборку. Есть основное приложение, которое ссылается на службу и использует этот тип Пространство имен для этого типа будет <Пространство для приложения>.<ПРостранство для службы> Потом я хочу передать этот тип контролу, который опрделен опять же в отдельной сборке. И тут эта проблема всплывает. Этот контрол не знает об этом типе и я попробовал: - добавить ссылку на службу. Результат, класс имеет простарнство имен <Пространство имен контродла>.<Пространство имен службы> и соответсвенно выскакивает ошибка о невозможности преобразования <Пространство имен контродла>.<Пространство имен службы>.<Тип> к <Пространство для приложения>.<ПРостранство для службы>.<Тип> -добавить пряммую ссылк на сборку, тоже безрезультатно, но тут понятно все. Остается вариант добавить перекрестную ссылку на основное приложение, но что-то даже не хочется об этом думать --------------------
Еще один вопрос ... |
|||
|
||||
| kobra |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 1 Всего: 9 |
иногда помогает сериализация десериализация.
|
|||
|
||||
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: 1 Всего: 2 |
Не совсем понял, немного подробнее бы. ПРосто вроде серилизация/десериализация итак происходит классов, объявленных контрактными, или нет?
--------------------
Еще один вопрос ... |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
NikeDeForest, должно хватить ссылки (reference) из "отдельной сборки контрола" на "отдельную сборку с передаваемым типом".
|
|||
|
||||
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: 1 Всего: 2 |
PashaPash, не получается так. Получается несовпадение типов - не совпадает тип передаваемый основным приложением(а основное приложение получает от службы) и типа, на который будет ссылаться контрол.
--------------------
Еще один вопрос ... |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
NikeDeForest, основное приложение, служба и контрол должны использовать один и тот же тип в "отдельной сборке с передаваемым типом".
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |