【问题标题】:ASP.NET CORE MVC dependicy inversion error with CRUD带有 CRUD 的 ASP.NET CORE MVC 依赖反转错误
【发布时间】:2021-07-23 00:33:21
【问题描述】:

今天我开始依赖倒置。在我开始实施之前,我有一个很好的 CRUD 系统,但现在我遇到了一些错误。它说“不能将类型 int 隐式转换为 ContractLayer.UsersDto” 在图像上,您可以在中间看到我的控制器,我认为那里一切正常。这个错误对我来说不是那么清楚。也许我忘了通过函数传递一个 int ?也许你们可以帮我解决这个问题。

亲切的问候,

Sem

Usercollection,UserController,IUserDal

【问题讨论】:

  • 请将代码的相关部分发布为text。除其他外,屏幕阅读器在解释图像方面存在问题。并且建议您也复制完整的错误消息。我们中的一些人可能拥有通灵能力,但如果没有提供足够的信息,我们中间的凡人只会回归猜测。
  • 左侧:public Users Create(UserDto user) 右侧:public int Create(UsersDto user)

标签: c# html asp.net-mvc asp.net-core razor-pages


【解决方案1】:

您的两个错误都只是由于类型不匹配 - 而不是依赖倒置。

错误的签名是

public int DeleteUser(int id);
public int CreateUser(UserDto dto);

在这两种情况下,它们都会返回 int,但您尝试构建 UsersDto

UsersDto = FactoryLayer.UserDalFactory.GetUserDal().DeleteUser(Id);

您必须将UserCollectionIUsersDal 中相应方法的签名更改为正确的类型。

我建议您将 Delete 方法更改为 public void DeleteUser(int id); 并将使用方法更改为:

public void Delete(int id) { ... }

当涉及到 create 方法时,我会将 IUserDal 中的签名更改为 public UsersDto Create(UsersDto dto);,然后相应地调整实现该接口的 concreate 类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多