c# - 无法将类型 'ListName[]' 隐式转换为 'System.Collections.Generic.IList<ListName>'

标签 c# asp.net wcf

我有一个具有特定属性的 IList。 我从数据库访问一组值到返回 IList 的代码。 我使用了一个网络服务,它在列表中提供了完整的细节。 作为 WCF 的服务在 WCFTestClient.exe 中得到很好的执行。 但是在代码隐藏中,它在放置时显示错误。

public IList<BrandInfo> SearchProduct(string name)
{
    AuthenicationServiceClient obj = new AuthenicationServiceClient();
    return obj.SearchProducts(name); 

}

它显示错误“Cannot implicitly convert type 'Model.BrandInfo[]' to 'System.Collections.Generic.IList<Models.BrandInfo>'

网络服务中的代码。

public IList<BrandInfo> GetBrandByQuery(string query)
{
    List<BrandInfo> brands = Select.AllColumnsFrom<Brand>()
        .InnerJoin(Product.BrandIdColumn, Brand.BrandIdColumn)
        .InnerJoin(Category.CategoryIdColumn, Product.CategoryIdColumn)
        .InnerJoin(ProductPrice.ProductIdColumn, Product.ProductIdColumn)
        .Where(Product.EnabledColumn).IsEqualTo(true)
        .And(ProductPrice.PriceColumn).IsGreaterThan(0)
        .AndExpression(Product.Columns.Name).Like("%" + query + "%")
        .Or(Product.DescriptionColumn).Like("%" + query + "%")
        .Or(Category.CategoryNameColumn).Like("%" + query + "%")
        .OrderAsc(Brand.NameColumn.ColumnName)
        .Distinct()
        .ExecuteTypedList<BrandInfo>();

    // Feed other info here
    // ====================
    brands.ForEach(delegate(BrandInfo brand)
    {
        brand.Delivery = GetDelivery(brand.DeliveryId);
    });

    return brands;
}

我如何从客户端访问此代码。我无法为此提取任何相关的在线引用。

最佳答案

我从您的错误消息中注意到的一件事是它清楚地指出:

Cannot implicitly convert type 'Model.BrandInfo[]' to 'System.Collections.Generic.IList<Models.BrandInfo>'

Model.BrandInfo不同于Models.BrandInfo在单独的项目中定义。编译器不会以这种方式得出等价性。您必须在一个项目中声明它并在另一个项目中引用它,或者您必须自己编写一个映射器。

有点像

public IList<BrandInfo> SearchProduct(string name)
{
    AuthenicationServiceClient obj = new AuthenicationServiceClient();
    return obj.SearchProducts(name).Select(Convert).ToList(); 
}

public Models.BrandInfo Convert(Model.BrandInfo x)
{
    //your clone work here. 
}

或者您应该尝试一些自动映射的库,例如 AutoMapperValueInjecter

关于c# - 无法将类型 'ListName[]' 隐式转换为 'System.Collections.Generic.IList<ListName>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19762573/

相关文章:

c# - If Condition inside 开关盒

c# - 在 RichEditBox 中更改文本颜色

ASP.NET 路由导致页面资源无法加载

asp.net - 在本地IIS上发布asp网站

ios - 使用swift在ios中使用svc服务时出现错误代码400

c# - web.config/Global.asax 中的自定义错误处理不处理不存在的目录

javascript - 验证 (Page_ClientValidate ('mygroup' )) 在回发后始终返回 true

c# - XmlSerializer 属性在使用 WCF 的 Web 服务中无效

c# - WCF 客户端 : First call fails, 第二次调用成功

c# - WPF 按钮图像源绑定(bind)字符串依赖属性