0

共通のビジネス ロジックを共有するさまざまな Visual Studio ソリューションに ASP.NET Web アプリケーションと WCF サービスがあります (両方のソリューションに BLL プロジェクトが追加されます)。それらは異なるサーバーでホストされています。

WCF サービスの次のメソッドを呼び出す場合:

List<RequiredAnimals> requiredAnimals=new List<RequiredAnimals>();
List<Animals>  animals=animalsService.GetRequiredAnimals(requiredAnimals);

...インテリセンスが教えてくれます:

引数の型AnimalManager.BLL.RequiredAnimals[]はパラメーターの型に割り当てられませんRequiredAnimals[]

AnimalsServiceReference 構成で「参照されているすべてのアセンブリで型を再利用する」を有効にしたので、次のような Web サイトの変数に WCF サービス メソッドの戻り値を割り当てることができることに注意してください。

動物を一覧表示=animalsService.GetAnimals();

しかし、私はできません:

List<RequiredAnimals> requiredAnimals=new List<RequiredAnimals>();
List<Animals> animals=animalsService.GetRequiredAnimals(requiredAnimals);

BLL で必要な動物は次のようになります。

  [DataContract]
    public class RequiredAnimal
    {
      [DataMember]
        public string Species{ get; set; }
        [DataMember]
        public string Name{ get; set; }
     }

WCF メソッドは次のようになります。

namespace AnimalsWcfService
{
    public class AnimalsService: IAnimalsService
    {
        public List<Animal> GetRequiredAnimals(List<RequiredAnimals> requirements)
        {
            List<Animal>animals= AnimalLookup.GetAnimals(requirements);
            return animals;
        }

        public List<Animal> GetAnimals()
        {
            List<Animal>animals= AnimalLookup.GetAllAnimals();
            return animals;
        }
    }
}

共有ビジネス ロジック オブジェクト Animal のリストを取得できるのに、RequiredAnimal をパラメーターとしてサービスに渡すことができない理由を誰か提案できますか?

4

1 に答える 1

1

ここのコードには小さな問題があります。リストを配列に変換しています。

Animals[] animals=animalsService.GetAnimals();

これを行う必要はありません。あなたのところに行くだけ

サービス参照 --> 構成 --> コレクションの種類 --> System.Generic.collections

現在は配列に設定されています。すると、以下のようにできるようになります。

List<Animals> animals = animalsService.GetAnimals();

これをに変更

List<Animals> animals=animalsService.GetRequiredAnimals(requiredAnimals);

リストをどこにも配列に変換していないことに注意してください

于 2013-08-17T13:03:44.660 に答える