WCF. Запрос не доходит до сервиса
От: Аноним  
Дата: 29.04.10 20:27
Оценка:
Привет всем,
У меня есть подобная иерархия классов:
Здесь два класса наследуются от одного предка (A). Причем один из наследников (C) содрежит массив элеметов A.
Другой интересный момент, класс B имеет свойство типа Object, который должен содержать простые типы, на всякий случай я их в KnownTypes добавил.

[DataContract]
[KnownType("KnownTypes")]
public class A {
    [DataMember]
    public String Prop1 { get; set; } 
    
    static Type[] KnownTypes() {
            return new Type[] { 
                typeof(B), 
                typeof(C)
            };
        }
}


[DataContract]
[KnownType("KnownTypes")]
public class B : A
{
    [DataMember]
    public Object Prop2 { get; set; }
    
    static Type[] KnownTypes() {
            return new Type[] { 
                typeof(String), 
                typeof(Int32), 
                typeof(Decimal),
                typeof(Boolean), 
                typeof(DateTime),
                typeof(Guid)
            };
        }
}

[DataContract]
public class C : A
{
    [DataMember]
    public A[] Children { get; set; }
}


Сервис имеет подобный метод:
public void MyMethod(A a)
{
    // ...
}

На стороне клиента сгенерированны проки классы. Создаются эксемпляры или B или С класса и вызывается метод сервиса MyMethod( b /* или с */).
Вызов до сервиса не доходит, и операция через некоторое время обрывается по таймауту.

Вопрос собственно, почему не доходит запрос? Или это иерархия классов, или нельзя использовать тип объект в классе B?
Надо сказать, что если я использую свойство типа объект в простом классе (без наследования), то запросы с этип типом доходят до сервиса, и он их успешно десериализирует.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.