gpt4 book ai didi

c# - 无法隐式转换类型。存在显式转换(您是否缺少转换?)

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:16 24 4
gpt4 key购买 nike

我正在尝试使用 ASP.Net Web API 开发 Web 应用程序。现在,在创建产品模型和 IProductRepository 接口(interface)后,我很难显示所有产品。我收到错误消息

Cannot implicitly convert type System.Collections.Generic.IEnumerable<WebApplication1.Models.Product> to System.Collections.Generic.IEnumerable<WebApplication1.Product>. An explicit conversion exists (are you missing a cast?)

Controllers\ProductsController.cs 17 20 WebApplication1

在这行代码上

return repo.GetAll();

我不知道该怎么办。如果有人指出问题并向我解释我做错了什么,那将非常有帮助。

ProductsController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebApplication1.Models;

namespace WebApplication1.Controllers
{
public class ProductsController : ApiController
{
static readonly IProductRepository repo = new ProductRepository();

public IEnumerable<Product> GetAllProducts()
{
return repo.GetAll();
}
}
}

ProductRepository.cs

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;

namespace WebApplication1.Models
{
public class ProductRepository : IProductRepository
{
public string cs = System.Configuration.ConfigurationManager.ConnectionStrings["MediaSoftAppEntities"].ConnectionString;

public IEnumerable<Product> GetAll()
{
List<Product> products = new List<Product>();
string sql = String.Format("Select [ProductID], [ProductName], [Price] FROM [Products]");

using (SqlConnection con = new SqlConnection(cs)){
using (SqlCommand cmd = new SqlCommand(sql, con)){
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
while(dr.Read()){
Product product = new Product();
product.ProductID = dr.GetInt32(0);
product.ProductName = dr.GetString(1);
product.Price = dr.GetInt32(2);
}
}
}
return products.ToArray();
}
}
}

IProductRepository.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WebApplication1.Models
{
public interface IProductRepository
{
IEnumerable<Product> GetAll();
}
}

最佳答案

错误是说编译器认为
ProductsController.GetAllProducts 想要返回一个 WebApplication1.Product
IProductRepository.GetAll 返回的是 WebApplication1.Models.Product

在这 2 个不同的命名空间中是否有 2 个 Product 类?

或者,您之前可能在 WebApplication1 命名空间中拥有 Product 类,现在它已移至 WebApplication1.Models 命名空间中,也许您只是有一个过时的引用,“全部重建”将修复它。

关于c# - 无法隐式转换类型。存在显式转换(您是否缺少转换?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24479911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com