对具有共享业务逻辑的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作为参数传递给服务吗?
您的代码中有一个小问题,您正在将List转换为数组。
Animals[] animals=animalsService.GetAnimals();
你不需要这么做。只需转到
服务参考-->配置-->集合类型-->System.Generic.collections
它当前将设置为Array。然后你将能够做到以下几点。
List<Animals> animals = animalsService.GetAnimals();
将其更改为
List<Animals> animals=animalsService.GetRequiredAnimals(requiredAnimals);
请注意,我还没有将List转换为任何位置的数组