2009-07-24 3 views
0

У меня есть отдельная сборка (ссылка WebService), в которой я создал класс (скажем, ABC) и коллекцию этого класса (ABCCollection: IList, где T: ABC). Теперь, когда я создаю прокси-файлы (output.config и Service1.cs), тогда отключение этих двух классов не отображается. Вместо этого ABCCollection отображается в Servic1.cs как ABCCollection4IP3.Структура экспозиции - веб-служба WCF

Пожалуйста, дайте мне знать возможные причины для этого вопросов ..

+0

Что такое 4IP3? Это добавлено в коллекцию? Я никогда этого не делал раньше. –

+0

Да, когда я создаю файл .cs из svcutil.exe, он будет ссылаться на мою собственную коллекцию примерно так: –

+0

Чтобы объяснить больше, я хочу выставить свою собственную коллекцию из своего веб-сервиса .. Как я могу это сделать ... Обычай класс коллекции находится в отдельной сборке, на которую ссылается мой WebService (WCF) –

ответ

0

Они не должны быть одного типа. Это по дизайну. Подумайте, как это будет работать, если ваша служба была в .NET и ваш клиент на Java. Очевидно, что они будут двух разных типов.

0

Лучшая практика при проектировании службы WCF, чтобы разбить свой проект на отдельные узлы:

Ассамблеи SomeProject.ServiceContract

Эта сборка содержит ваш контракт на обслуживание (только интерфейсы).

Пример:

[ServiceContract (...)] 
public interface ICan { 

    [ServiceOperation (...)] 
    void EatCandies (MyListOfCandies candies); 

} 

SomeProject.DataObjects Сборочные

Эта сборка содержит все объекты данных, который используется вашим договором на обслуживание.

Пример:

[DataObject] 
public class MyListOfCandies : List<Candy> { 
    ... 
} 

В вашем проекте, который потребляет ваш веб-службы ссылку на сборку «SomeProject.DataObjects», а затем добавить веб-сервис. Вы увидите, что Visual Studio больше не будет создавать какие-либо объекты-заглушки, но будет использовать вашу реализацию.

Вы можете сделать то же самое с сборкой ServiceContract. Таким образом, вы по-прежнему можете использовать веб-службы, но при изменении интерфейса вы получите ошибки компиляции.