1

私はSliverlightとRIAServicesを初めて使用し、少し壁にぶつかりました。

カスタムオブジェクトをUIに取り込むために、DALにアクセスする必要があるSilverlightアプリがあります。RIAサービスを設定しました。私のWebアプリでは、DomainServiceを追加し、DALサービスを呼び出してデータを取得します。

ビジネスオブジェクトを格納する別のプロジェクトがあり、DomainServiceはこれにこれらのオブジェクトのリストを返します。ビジネスオブジェクトで、Key属性をIDプロパティに追加しました。

すべてが正常に機能しています。サービスを呼び出すことができ、オブジェクトのリストを取得できます。それらはSilverlightアプリで確認でき、オブジェクトのすべてのプロパティを確認できます。

私が理解できない唯一のことは、メソッドにアクセスする方法です。ビジネスオブジェクトにSilverlightアプリでアクセスする必要のあるメソッドがいくつかありますが、メソッドが公開されているようには見えません。

クラスからこれらのメソッドにアクセスする方法はありますか?または、このメソッドを呼び出すラッパーをDomainServiceオブジェクトに作成する必要がありますか?本当に最初の方がいいです。

どんな助けでも大歓迎です。これは非常に長い間ブロックされています。

4

1 に答える 1

0

あなたはかなり近いようですね。

説明の仕方からすると、ビジネスオブジェクトクラスはインスタンス化されていないように聞こえます。Silverlightがビジネスオブジェクトのメソッドを使用できるようにする「スタブ」メソッドをWebプロジェクト(DomainService)に配置する必要があります。

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はエンティティです
  • TがエンティティであるIQueryable

メソッドには、任意の名前、パラメーターを指定できます。

たぶん私はあなたがやりたくないことを説明しただけです...もしそうなら、私はお詫び申し上げます。

于 2010-12-19T05:14:30.667 に答える