ResolutionFailedException: Resolution failed with error: No public constructor is available for type

wpf运行的时候出现这个错误是因为该错误通常发生在依赖项注入框架的上下文中,例如 Spring 或 .NET Core 的依赖项注入。以下是此错误通常指示的内容以及如何解决它:

解决 方案

若要解决此问题,请考虑以下步骤:

  1. 添加公共构造函数:确保您的类至少有一个公共构造函数。如果您的类只有私有构造函数或受保护的构造函数,请添加框架可以使用的公共构造函数。

  2. 检查构造函数参数:如果构造函数需要参数,请确保:

    • 参数类型要么在 DI 容器中注册,要么可以自动解析。
    • 构造函数本身被标记为公共。
  3. 查看 DI 配置:如果您正在使用配置文件(例如,Spring 中的 XML 文件或 .NET Core 中的 ConfigureServices 方法),请确保您已正确注册依赖项,并且配置中没有冲突或歧义。

  4. 构造函数注入与属性注入:考虑您是使用构造函数注入还是属性注入。构造函数注入(其中依赖项作为构造函数参数传递)通常是首选,因为它使依赖项明确,并确保它们在创建对象时可用。

  5. 检查循环依赖关系:循环依赖关系有时会导致 DI 框架出现问题。如果可能,尝试重构代码以避免循环依赖关系。

我的错误是因为忘记在app.cs文件中的

 protected override void RegisterTypes(IContainerRegistry containerRegistry)
 {
    //加入注册
     containerRegistry.Register<IWebDataAccess, WebDataAccess>();
     containerRegistry.Register<ILocalDataAccess, LocalDataAccess>();
 }

由于“没有可用于类型的公共构造函数”导致的 ResolutionFailedException,通常需要确保要解析的类具有依赖项注入框架可以使用的合适的公共构造函数。通过遵循上述准则并检查构造函数可见性、参数和 DI 配置,您应该能够成功解决此错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值