Доступ к методам бизнес-объектов из Silverlight

Я новичок в Sliverlight и RIA Services, и я наткнулся на стену.

У меня есть приложение Silverlight, которому требуется доступ к нашему DAL, чтобы наши настраиваемые объекты заполняли пользовательский интерфейс. Настроил сервис РИА. В своем веб-приложении я добавил службу DomainService, и она вызывает службу DAL для возврата данных.

У меня есть отдельный проект, в котором находятся наши бизнес-объекты, и DomainService возвращает ему список этих объектов. В бизнес-объекте я добавил атрибут Key к свойству ID.

Все работает нормально. Могу позвонить в сервис, могу получить список объектов. Я вижу их в своем приложении Silverlight и могу видеть все свойства своих объектов.

Единственное, чего я не могу понять, это как получить доступ к методам. У меня есть несколько методов в моем бизнес-объекте, к которым мне нужно получить доступ в моем приложении Silverlight, но это не выглядит так, как если бы метод был открыт.

Есть ли способ получить доступ к этим методам из класса? Или мне нужно написать оболочку в моем объекте DomainService, которая будет вызывать для меня этот метод? Я бы предпочел первый действительно.

Любая помощь будет принята с благодарностью. Это блокирует слишком долго.


person Tyanna    schedule 17.12.2010    source источник


Ответы (1)


Похоже, вы довольно близки.

Судя по тому, как вы описываете, это звучит так, будто классы бизнес-объектов не создаются. Вам необходимо добавить в веб-проект (DomainService) методы-заглушки, которые позволят Silverlight использовать методы бизнес-объекта.

В вашем классе DomainService:

using System.ServiceModel.DomainServices.Hosting; 
using System.ServiceModel.DomainServices.Server; 
using XYX.YourBusinessClassLibrary;  <-- need reference in web app

[EnableClientAccess()] 
public class linkdirectoryDS : DomainService 
{

    public IEnumerable<Category> GetCategories() 
    { 
        Category cat = new Category(); 
        return cat.Retrieve(); 
    } 
} 

О методе GetCategories:

Это должен быть метод, а не свойство.

Должен возвращать одно из:

  • Единое целое
  • IEnumerable, где T - это объект
  • IQueryable, где T - это объект

Метод может иметь любое имя, параметры.

Может, я просто описал то, что вы не хотели делать ... если так, прошу прощения.

person Rich Bianco    schedule 19.12.2010
comment
Да, именно так я и надеялся, что не должен этого делать. На выходных я еще немного почитал, и все, кажется, указывает на это. Спасибо за помощь :) - person Tyanna; 20.12.2010