问题标签 [lamar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
115 浏览

c# - Lamar AddScoped 未按预期工作网络核心 webapi

我有 netcore webapi 项目,我正在使用 Lamar 进行 DI。我有一个服务 MyContextService 我注册为范围

我在两个地方使用此服务,首先是在授权处理程序中(我还设置了上下文)。

第二个位置是在控制器中

在这个控制器中,我希望设置上下文,但事实并非如此,我注意到这两个实例具有不同的哈希码。我在这里做错了什么?

0 投票
1 回答
79 浏览

c# - 根据Route在Controller中注入不同的实现

我有一个 ASP.NET Core 应用程序,我想根据所选的 Route 使用不同的策略。例如,如果有人导航到 /fr/Index 我想将法语翻译实现注入我的控制器。同样,当有人导航到 /de/Index 时,我希望注入德语翻译。

这是为了避免让我的控制器上的每一个操作都读取“语言”参数并将其传递。

从更高的层次来看,我想要这样的东西:

不幸的是,看起来我没有在该级别获得 IoC 容器解析上下文。

PS:我使用 Lamar 作为 IoC。

0 投票
1 回答
111 浏览

c# - 使用 Lamar DI 容器,如何使用给定类型的 lambda 构建对象?

Lamar 为使用 lambda 构建对象提供了以下语法:

这将允许您解析将执行注册委托的 ISomeType:

是否有非通用等价物,例如以下?

我没有看到这个超载。

0 投票
0 回答
180 浏览

asp.net-core - 使用 MediatR 注册构造函数依赖项的 Lamar,有更好的方法吗?

我正在使用 Lamar,并且我添加了在我的控制器中工作的大量依赖项。

当我尝试使用 MediarR 的处理程序时,我必须像这样显式设置 Ctor 依赖项:

我将不得不为每个处理程序执行此操作?看起来很繁琐,ClientAppContext依赖已经在容器中注册了,为什么处理程序不自动注入呢?不需要上面的代码。

我是否需要以某种方式让处理程序知道我容器中的所有依赖项?

这是我注册的一些依赖项的示例:

0 投票
1 回答
342 浏览

c# - 使用 Lamar 注入运行时对象

我正在尝试为我维护的框架为 Lamar 构建一个包。为了说明我对 StructureMap 的引用的意思,能够将运行时对象与 Service 抽象混合的相关方法是(将容器传递给该工厂类的构造函数的地方):

我意识到 Lamar 没有实施ExplicitArguments(很公平)。

我玩过 Injectable 功能,但无法让它发挥作用:

拉马尔有其他方法吗?

这是我的注册码:

我创建了一个示例项目,它重新创建了可以在此处下载的问题。它使用 .NET 5

在该项目中,如果您在 class 中放置断点MainPresenter,您将看到IView参数为 null 并且OrdersService确实解析。

我需要将作为主要形式的具体对象也传入(作为IView)。

干杯

0 投票
1 回答
35 浏览

.net - 转换为 Lamar - 注册 - 使用 StructureMap 的这段代码的等价物是什么?

我正在将 ASP.NET 应用程序迁移到 .NET5 并遇到以下使用 StructureMap 的代码...

我们在新应用程序中使用 Lamar;替换的等效代码是.AlwaysUnique().Singleton().HttpContextScoped()什么?

0 投票
0 回答
38 浏览

.net-5 - 使用 Oakton 检查我的 Net5 核心应用程序的 Lamar 配置并获得空引用,我该如何解决这个问题?

我正在设置此诊断以帮助解决未调用我的 ValidationBehavior 的调解器管道行为问题。下面是用于配置 Lamar、MassTransit 和 Serilog 的主机构建器设置:

我正在使用以下命令调用 Oakton 诊断:

这导致以下输出: 在此处输入图像描述

这是我正在使用的软件包列表:

不确定如何调试 Oakton - 它似乎没有找到合适的 Lamar.Diagnostics 包。

0 投票
0 回答
19 浏览

lamar - 如何在 Lamar 5 的 Use(ctx =>{}) 工厂函数中获取请求的类型?

我想在我的基类上有一个用于记录器的 setter 属性,这样我就不必经历将记录器传递给所有服务的基本构造函数的繁琐工作。

FooService被实例化时,我希望将Logger属性设置为 的实例ILogger<T>,在这种情况下ILogger<FooService>。我不想ServiceBase为了将 a 传递<T>给属性声明而使我的泛型。以前我在类型注册中实现了这一点(我不记得我使用的是哪个框架,那是几年前的事了。可能是 Ninject,可能是 AutoFac,不确定)。

伪代码看起来像这样(因为我不记得框架)。

这在拉马尔可能吗?

我已经在IServiceContext传递给该Use(ctx)方法的周围戳了一下,但什么也看不到。

0 投票
0 回答
10 浏览

lamar - 如何使用 Lamar 为特定的“T”解析“ILogger”?

我正在使用拉马尔 6。

我有一堆域服务,它们都将 aILogger<T>作为构造函数参数。我想通过将记录器移动到具有属性集实例的基类来整理代码ILogger,但我希望注入的实例成为运行时服务类型的ILogger<T>位置T,以便我的日志条目知道生产类型.

我有什么

我想要的是

我试图指定一个工厂,ILogger但我找不到任何获取请求类型的方法(在这种情况下,FooService

如何ILogger为当前请求的类型构建一个正确的 categoryName ?这可能吗?

0 投票
0 回答
4 浏览

dependency-injection - Marten - 使用 DI 处理数据库连接

使用 Marten,我遇到了一个连接没有被处理的问题。我能够通过手动处理连接来解决这些问题。这很容易出错,我想知道是否有更好的方法。

在这篇文章中,建议:

我个人建议不要手动处理 DocumentSession,而是让依赖注入容器正确管理它 - 例如。对 DocumentSession 使用请求范围注册,对 Document Store 使用 Singleton。

我将如何配置它?目前,我对 Marten 的 DI 范围是使用 AddMarten 方法