2013-06-19 4 views
0

У меня есть служба домена, работающая плавно, некоторые функции экспонирования возвращают общие списки определенного объекта, но по какой-то причине я добавил некоторую общую информацию, поэтому я создал общий объект чтобы обернуть коллекцию дополнительной информацией, которая мне нужна.Служба домена silverlight не позволяет вернуть общий объект

, но когда после внесения изменений и попробуйте использовать службу в клиенте, функция не отображается в контексте, я уже искать об этом и то, что я нашел атрибуты для родового IQueryable

мой обруча класс

public class Wrap<T> 
{ 

    public String commonProperty { get; set; } 
    public String anotherCommonProperty { get; set; } 
    public List<T> items { get; set; } 

} 

в моем домене службы

public Wrap<SomeClass> GetAll() 
{ 

    Wrap<SomeClass> myObject = new Wrap<SomeClass>(); 
    myObject.items = new List<SomeClass>(); 
    myObject.commonProperty = "some info"; 
    myObject.anotherCommonProperty = "some info"; 
    return myObject; 

} 

ответ

0

Возможно добавление атрибута [KnownType(typeof(SomeClass))] в Wrap<T> классе, т проблема в том, что вам нужно включить один атрибут KnowType для каждого класса вашего домена (это потому, что вы выполняете полиморфную службу).

И добавление [ServiceKnownType(typeof(SomeClass))] в метод GetAll в службу (это для служб wcf, которые не знаю, действительны ли для служб домена).

0

Услуги домена WCF RIA не поддерживают общие типы сущностей.IEnumerable<T> и IQueryable<T> - это особые случаи.

Ваш метод был проигнорирован, потому что он не соответствовал supported method type. До изменений GetAll был признан методом запроса. Вы можете заставить это добавить атрибут.

[Query] 
public Wrap<SomeClass> GetAll() 

Теперь он не исчезает бесшумно. Но вместо этого генерирует ошибку времени компиляции:

Тип 'Wrap`1' не является допустимым типом объекта. Типы объектов не могут быть generic.