如何在项目之间使用模型类型?

时间:2016-04-25 17:55:32

标签: c# asp.net service-layer

我使用服务层lattern,我的解决方案包含三个项目:

  • 核心
  • 服务
  • UI

在我的控制器中在UI项目中,我有以下代码:

 public ActionResult AddSpotifyAlbums(List<SpotifyAlbums> albums)
        {
            _profileService.AddSpotifyAlbums(albums);
            return Json(new { data = albums });
        }

List<SpotifyAlbums>中的SpotifyAlbums是我的UI项目中的模型。它看起来像这样:

  public class SpotifyAlbums
    {
        public string URI { get; set; }
        public int profileId { get; set; }
    }

正如您所看到的,我在这里使用服务_profileService来调用处理相册保存的方法。

但是专辑的类型是SpotifyAlbums。当专辑的型号类型为SpotifyAlbums时,我该如何处理我的服务?

我试图在我的服务项目中创建一个相同的模型,但它不起作用。我收到以下错误:

  

严重级代码描述项目文件行抑制状态   错误CS1503参数1:无法转换   &#39; System.Collections.Generic.List&#39;   至   &#39; soundyladder.Service.Models.SpotifyAlbums&#39;

3 个答案:

答案 0 :(得分:1)

您不能随意分配不同类型的对象。即使你给它们相同的名字,它们也是独立的实体。

假设服务和UI项目引用了您的Core项目,您可以在Core项目中定义SpotifyAlbums类,并在其他层中引用该类。

答案 1 :(得分:0)

布莱恩,你需要决定哪个模块“拥有”SpotifyAlbum。决策需要考虑数据封装,数据访问和数据操作方面。重要的是建立适当的服务引用并使用SpotifyAlbum实例获取所有模块以从“拥有”SpotifyAlbum的模块中获取它。然后所有其他模块都将具有从“拥有”模块的引用构建的代理类。

答案 2 :(得分:0)

我使用相同的设计模式(基于资源的可信子系统)。我喜欢使用包含公共代码和共享模型的.dll。然后所有项目都引用.dll作为模型定义。