c# - 如何在引用 dll 的 Razor 类库中共享视图组件?
问题描述
ASP.NET Core 2.2.0
我用一些(Razor)页面、接口、存储库和模型构建了一个 RCL,我想使用 DLL 引用与我的其他项目共享该 RCL。效果很好(使用this),现在我想在 RCL 中使用 View Components,但它给了我错误:
InvalidOperationException:尝试激活“Shared.Components.ItemViewComponent”时,无法解析“Shared.ModelInterfaces.IMyRepository”类型的服务。
深入研究错误,我发现了这一点:
方法只能在 type.is 泛型参数为 true 的类型上调用
看起来这是导致主要错误的原因。
我的 ViewComponent 没有通用类型:
namespace Shared.Components
{
public class ItemViewComponent : ViewComponent
{
private readonly IMyRepository _myRepository;
public ItemViewComponent(IMyRepository myRepository)
{
_myRepository = myRepository;
}
public IViewComponentResult Invoke(string ViewType, string Category = "", string Organization = "", string ItemID = "")
{
// some code / some calls to my _myRepository / some returns
}
}
}
我怎样才能解决这个问题?我需要IMyRepository ...
边注
我知道 RCL 通常由项目引用或作为 NuGet 包引用,但这些方法对我来说有一些缺点,这就是我通过 DLL 引用我的 RCL 的原因。
解决方案
IMyRepository
您必须使用视图组件在项目中注册您的服务:
services.AddScoped<IMyRespository, MyRepository>();
推荐阅读
- log4j - log4j2 的问题
- javascript - 我们应该如何处理 WebApp 中的事件?许多事件处理程序与一个
- http-headers - Content-Type 多部分标头中的“通过电子邮件网关非常强大”是什么意思?
- python - 如何删除 ValueError:值的长度(55)与 python 中的索引长度(100)不匹配?
- r - 为什么我收到错误为“mapIds(GeneCol)中的错误:找不到函数“mapIds””
- node.js - JSON 响应不包含字段值
- python - 访问当前用户位置并显示其附近的所有用户
- python - 如何将带有整数的字符串拆分为两个变量?
- firebase - Firebase AUTH - 超出限制功能结果
- excel - 使用excel vba进行多个网页归档