powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WCF & Generics
18 сообщений из 18, страница 1 из 1
WCF & Generics
    #35470446
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WCF не работает с Generic типами. Т.е. метод вида
Код: plaintext
List<T> Seleсt<T>();
Т.е. WCF не может работать с заранее не определенными типами. Как кому удавалось обходить это ограничение ?
...
Рейтинг: 0 / 0
WCF & Generics
    #35470591
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
атрибут KnownType
...
Рейтинг: 0 / 0
WCF & Generics
    #35470628
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот этот топик почитай. Я там несколько примеров выложил.
...
Рейтинг: 0 / 0
WCF & Generics
    #35472627
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredВот этот топик почитай. Я там несколько примеров выложил.

На сколько я знаю KnownType использвется при объявлении классов,структур. Попытался применить ее на класс в котором реализован метод описанный выше. Все компилируется но на ран тайм выдает ошибку :
Type 'System.Collections.Generic.List`1[T]' cannot be exported as a schema type because it is an open generic type. You can only export a generic type if all its generic parameter types are actual types.

Как же все таки обойти ? В пример твоих не нашел работы с <T>
...
Рейтинг: 0 / 0
WCF & Generics
    #35472639
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а какая задача-то вообще?
...
Рейтинг: 0 / 0
WCF & Generics
    #35472656
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredа какая задача-то вообще?
Задача использовать метод вида List<T> SelectObject<T>(long id) или аналог на клиенте через WCF
...
Рейтинг: 0 / 0
WCF & Generics
    #35472669
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дата-контракте можно использовать Генерик, только если в сервис-контракте будет стоять конкретный тип. Вот так:

[SRC{post.srctag}]
[DataContract]
class MyClass<T>
{
[DataMember]
public T m_MyMember;
}

[ServiceContract]
interface IMyContract
{
[OperationContract]
void MyMethod(MyClass<int> obj);
}[/SRC]
...
Рейтинг: 0 / 0
WCF & Generics
    #35472672
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идиоты, чего они крутят этот форумный движок всё-время

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
[DataContract]
class MyClass<T>
{
   [DataMember]
   public T m_MyMember;
}

[ServiceContract]
interface IMyContract
{
   [OperationContract]
   void MyMethod(MyClass<int> obj);
}
...
Рейтинг: 0 / 0
WCF & Generics
    #35472807
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Плохо блин...
...
Рейтинг: 0 / 0
WCF & Generics
    #35472812
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перегрузку сервис-методов можно сделать
...
Рейтинг: 0 / 0
WCF & Generics
    #35472818
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredперегрузку сервис-методов можно сделать

Каким образов ? Если на коротком примере рассмотреть ?
...
Рейтинг: 0 / 0
WCF & Generics
    #35472842
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да короче не куда

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
[DataContract]
class MyClass<T>
{
   [DataMember]
   public T m_MyMember;
}

[ServiceContract]
interface IMyContract
{
   [OperationContract]
   void MyMethod(MyClass<int> obj);
[OperationContract]
   void MyMethod(MyClass<double> obj);
}
...
Рейтинг: 0 / 0
WCF & Generics
    #35472869
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и даже так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
[DataContract]
class MyClass<T>
{
   [DataMember]
   public T m_MyMember;
}

[DataContract]
class SomeClass
{
...
}

[ServiceContract]
interface IMyContract
{
   [OperationContract]
   void MyMethod(MyClass<int> obj);
[OperationContract]
   void MyMethod(MyClass<double> obj);
[OperationContract]
   void MyMethod(MyClass<SomeClass> obj);
}
...
Рейтинг: 0 / 0
WCF & Generics
    #35472872
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не волшебная палка конечно как ты думал, но для бытовых нужд хватит
...
Рейтинг: 0 / 0
WCF & Generics
    #35472935
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredда короче не куда

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
[DataContract]
class MyClass<T>
{
   [DataMember]
   public T m_MyMember;
}

[ServiceContract]
interface IMyContract
{
   [OperationContract]
   void MyMethod(MyClass<int> obj);
[OperationContract]
   void MyMethod(MyClass<double> obj);
}


Скорее всего придется уйти к тому от чего пришел...
Код: plaintext
object SelectObject(object obj)
и проверяем
Код: plaintext
if(obj is MyObject) {тра ля ля}
а так хотелось с генериками поработать...
Хотя в принципе разницы никакой...
если генерики то:
Код: plaintext
List<MyObject> o = SelectObject<MyObject>();
а если по старинке то:
Код: plaintext
List<MyObject> o = (List<MyObject>)SelectObject(new MyObject());
просто лишние преобразования.
...
Рейтинг: 0 / 0
WCF & Generics
    #35472997
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделайте иерархию контрактов и проставте knowntype атрибуты. А то вы сами скоро запутаетесь в своих же object-ах
...
Рейтинг: 0 / 0
WCF & Generics
    #35473063
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredсделайте иерархию контрактов и проставте knowntype атрибуты. А то вы сами скоро запутаетесь в своих же object-ах

С бизнес-объектами там все ясно, сейчас то проблема стоит разумной реализации методов по работе с ними через WCF.
...
Рейтинг: 0 / 0
WCF & Generics
    #35475089
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Громоздко, но я бы всё-таки сделал перегрузку метода для всех бизнес-объектов (если их не много), а так неизвестно сколько ошибок в рантайм вы словите на преобразованиях из object.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WCF & Generics
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]