【问题标题】:How to use model types between projects?如何在项目之间使用模型类型?
【发布时间】:2016-08-19 06:25:48
【问题描述】:

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

  • 核心
  • 服务
  • 用户界面

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

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

List&lt;SpotifyAlbums&gt; 中的 SpotifyAlbums 是我的 UI 项目中的模型。它看起来像这样:

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

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

但是相册的类型是SpotifyAlbums。相册模型类型为SpotifyAlbums时,我的服务应该怎么做?

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

严重性代码描述项目文件行抑制状态 错误 CS1503 参数 1:无法从 'System.Collections.Generic.List' 到 'soundyladder.Service.Models.SpotifyAlbums'

【问题讨论】:

  • 将模型定义放在您的其他项目引用的类库项目中。

标签: c# asp.net service-layer


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    Bryan,您需要决定哪个模块“拥有”SpotifyAlbum。决策需要考虑数据封装、数据访问和数据操作方面。建立正确的服务引用并让所有使用SpotifyAlbum 实例的模块从“拥有”SpotifyAlbum 的模块中获取它是很重要的。然后所有其他模块将具有从对“拥有”模块的引用构建的代理类。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-22
        • 1970-01-01
        • 1970-01-01
        • 2017-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-23
        相关资源
        最近更新 更多