对具有共享业务逻辑的WCF方法的调用..参数不可分配给

本文关键字:调用 方法 参数 不可分 可分配 WCF 共享 业务 | 更新日期: 2023-09-27 18:27:58

我在不同的Visual Studio解决方案中有一个ASP.NET web应用程序和一个WCF服务,它们共享共同的业务逻辑(BLL项目被添加到这两个解决方案中)。它们托管在不同的服务器上。

调用WCF服务的以下方法时:

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

intellisense告诉我:

参数类型AnimalManager.BLL.RequiredAnimals[]不可分配给参数类型RequiredAnimals[]

请注意,由于我在AnimalsServiceReference配置中启用了"在所有引用的程序集中重用类型",我可以将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的列表,但我不能将RequiredAmal作为参数传递给服务吗?

对具有共享业务逻辑的WCF方法的调用..参数不可分配给

您的代码中有一个小问题,您正在将List转换为数组。

Animals[] animals=animalsService.GetAnimals();

你不需要这么做。只需转到

服务参考-->配置-->集合类型-->System.Generic.collections

它当前将设置为Array。然后你将能够做到以下几点。

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

将其更改为

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

请注意,我还没有将List转换为任何位置的数组