Onur ERYILMAZ Ответов: 0

Как я могу вернуть класс, который имеет список классов внутри него из веб-службы WCF restful


Привет;

Я хочу вернуть класс MobileResult из моей веб-службы WCF Rest для каждой операции, которая возвращает это значение.

Я могу сделать это с классами, внутри которых нет списка классов. Но когда я возвращаю класс, в котором есть список классов, он не сериализует этот класс.

Итак, как я могу вернуть класс, в котором есть список классов? Или я могу это сделать?

Спасибо.

Что я уже пробовал:

Мой класс MobileResult;

[KnownType(typeof(SomeClass))]
[KnownType(typeof(AnotherClass))]
[DataContract]
[Serializable]
public class MobileResult
{
    [DataMember]
    public bool result { get; set; }
    [DataMember]
    public object data { get; set; }

    public MobileResult(bool res, object obj)
    {
        result = res;
        data = obj;
    }
}


Мой SomeClass, этот класс может прекрасно сериализоваться;

public class SomeClass
{
    public int ID { get; set; }
    public string Name { get; set; }
}


Мой Another Class, этот класс не сериализуется;

public class AnotherClass
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public virtual ICollection<SomeClass> Classes{ get; set; }

        public AnotherClass{ Classes = new HashSet<SomeClass>(); }
    }


Операционный Контракт;

[OperationContract]
        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "GetAnotherClass/{number}")]
        MobileResult GetAnotherClass(string number);


public MobileResult GetAnotherClass(string number)
        {
            try
            {
                AnotherClass aClass = new AnotherClass();
                aClass.ID = 5;
                aClass.Title = "MyTitle";
                aClass.Classes = GetClasses();
 
                return new MobileResult(true, aClass);
            }
            catch
            {
                return null;
            }
        }

0 Ответов