unity-container 相关问题

Unity应用程序块(即Unity)是一个轻量级,可扩展的.NET依赖注入容器,支持拦截。

如何忽略NuGet NU1605?

我有一个庞大的解决方案,其中包含许多项目和内部 NuGet 包,这些包普遍依赖于 Unity 4.0.1。我们正在评估将此解决方案迁移到 Unity 5.11.1 以提高性能...

回答 1 投票 0

UseUnityServiceProvider 在 WebApplicationBuilder 上无法正常工作

我正在尝试从.NET3.1迁移到.NET6.0 WebAPI。我将其视为执行此迁移的手册。 我使用 UnityContainer 作为 DependencyInjection 框架。所以在.NET3.1中我有这样的东西:

回答 1 投票 0

C# Unity 错误:无法加载文件或程序集

我在Unity上找到了这篇演示文章。看起来很简单,但我收到以下错误: 无法加载文件或程序集 'System.Runtime.CompilerServices.Unsafe,版本=4.0.4.1,

回答 4 投票 0

如何在 Webapi 中的 ActionFilter 属性中注入 Unity 容器依赖项

在 UnityConfig 中完成所有配置后,我看不到 Instant in Action 过滤器。 在 ActionFilter 属性中注入 Unity Container 依赖,是否可以在 ActionFi 中注入...

回答 0 投票 0

修复AR Oclusion质量问题

在这里输入图片描述 在此图像中,仍然有像素没有正确边缘我该如何解决这个问题。我尝试了所有选项,例如 - 快速 - 中等的 - 最好的 我想要一个解决方案

回答 0 投票 0

在C#和Unity中如何让鼠标放在玩家身上时不弯腰?

我正在尝试为玩家的动作制作一个脚本,以使玩家向各个方向行走并绕着自己旋转,问题是当我将鼠标指针放在头上或...

回答 1 投票 0

Unity 容器 - 如何正确解析注册为单例的参数化 MemoryCache

尽管 Unity 容器已被弃用,但不幸的是我发现自己不得不使用它,因为我正在处理的当前 wpf 代码库多年来一直依赖它。 在服务器端,我能够...

回答 0 投票 0

Mediatr 行为管道中的验证

我在我的 web api 2 项目中使用 Mediatr 4。与 FluentValidation 和 Unity 一起,我一直在添加管道行为来验证我的请求。 公共类 ValidationBehavior 我在我的 web api 2 项目中使用 Mediatr 4。与 FluentValidation 和 Unity 一起,我一直在添加管道行为来验证我的请求。 public class ValidationBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> where TRequest : IRequest<TResponse> { private readonly IEnumerable<IValidator<TRequest>> _validators; public ValidationBehavior(IEnumerable<IValidator<TRequest>> validators) { _validators = validators; } public Task<TResponse> Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate<TResponse> next) { var context = new ValidationContext(request); var failures = _validators .Select(v => v.Validate(context)) .SelectMany(result => result.Errors) .Where(f => f != null) .ToList(); if (failures.Count != 0) { throw new ValidationException(failures); } return next(); } } 这一切都很好,但我真的很想能够在一个完整的响应中返回验证。我正在努力进行这样的更改,要么编译它,要么不让 Unity throw runtime 解决问题。 我在想有这样的东西: public class CommandResult : IResponseBase { private List<ValidationFailure> _validationFailures = new List<ValidationFailure>(); private readonly string _correlationid; public CommandResult(string correlationid) { _correlationid = correlationid; } public bool IsSuccess => _validationFailures.Count == 0; public static implicit operator bool(CommandResult result) { return result.IsSuccess; } public void AddFailures(List<ValidationFailure> results) { _validationFailures = results; } public List<ValidationFailure> Failures => _validationFailures; public string CorrelationId => _correlationid; } 在此基础上,我在行为中添加了一个约束: public class ValidationBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> where TRequest : IRequest<TResponse> where TResponse : IResponseBase, new() 但是尝试返回一个 CommandResult 而不是抛出异常给我带来了类型转换问题,感觉我让它变得太复杂了,我遗漏了一些非常基本的东西。 有两种类型的验证(至少) 请求数据验证 - 验证接收到的 HTTP 请求是否包含格式正确的所需数据。前任。 Email 字段是必需的,并且应该是有效的电子邮件地址** 特定于域的验证 - 验证Command 尝试应用于当前应用程序状态的修改从 domain prospective 是有效的。前任。 Email 必须是唯一的。 Email 不应该被blacklisted. 第一种类型的验证进入ActionFilter。 第二种类型的验证进入IPipelineBehavior 域命令模式 - 验证 让我为您的问题建议另一种方法。在您的请求命中控制器并且必须由 mediatr 路由之前,使用自定义 ActionFilterAttribute 而不是管道来执行验证。以下示例使用 Autofac 作为容器,但我希望您能理解并能够适当地修改代码。作为奖励 - 您的 Mediatr 请求或处理程序无需更改。验证将在调用控制器操作之前执行,并且在您有有效请求之前不会进一步执行。 public class ValidateModelStateFilter : ActionFilterAttribute, IAutofacActionFilter { private readonly IValidatorFactory _factory; /// <summary> /// Constructor /// </summary> /// <param name="factory"></param> public ValidateModelStateFilter(IValidatorFactory factory) { _factory = factory; } /// <summary> /// /// </summary> /// <param name="actionContext"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public override Task OnActionExecutingAsync(HttpActionContext actionContext, CancellationToken cancellationToken) { base.OnActionExecutingAsync(actionContext, cancellationToken); IEnumerable<object> parameters = actionContext.ActionArguments.Select(x => x.Value).Where(x => x != null); foreach (var parameter in parameters) { Type argumentType = parameter.GetType(); if (argumentType == typeof(int) || argumentType == typeof(string)) { continue; } IValidator validator = _factory.GetValidator(argumentType); if (validator != null) { ValidationResult validationResult = validator.Validate(parameter); if (!validationResult.IsValid) { // place your formatting logic here. actionContext.Response = <your formatted response>; } } } return Task.FromResult(0); } } } 我喜欢这句话: 感觉我把它弄得太复杂了,我遗漏了一些非常基本的东西。 这个问题现在已经超过 5 年了,所以这个问题可能不再反映你的代码库,但像这样的问题似乎仍然会弹出,而且关于这个主题的文章也有写。 我不明白为什么那么多人想使用各种通用接口来为请求添加验证。 首先人们需要几个小时来设置它,然后讨论如何返回结果(确实抛出异常是糟糕的设计,但返回一个有用的对象应该不会那么难?)以及每次更新 MediatR包你需要担心是否所有的注册仍然有效。 我对 IGet 感到非常兴奋,它允许您通过愚蠢的简单代码创建“管道”,只需通过外部处理程序显式获取和调用处理程序。 IGet 只是实例化类并注入它们的依赖项,你可以随心所欲地使用它: public class MyRequestXPipeline { private ILogger<MyRequestXPipeline> _logger; private IGet i; public MyRequestXPipeline(IGet iget, ILogger<MyRequestXPipeline> logger) { _logger = logger; i = iget; } public async Task<Result<WhatWasAskedFor>> Handle(RequestX request) { var validationResult = i.Get<MyRequestXValidator>().Validate(request); if (!validationResult.IsValid) { return Result.Fail<WhatWasAskedFor>(validationResult.Message); } var whatWasAskedFor = i.Get<RequestXMainHandler>().Handle(request); var notification = new RequestXSucceeded { RequestX = request }; await i.Get<NotificationPublisher<RequestXSucceeded>>().PublishAsync(notification); // call other handlers, maybe do more stuff. return Result.Success(whatWasAskedFor); } } 不再依赖接口注册和 MediatR 调用await next(),您现在可以清楚地看到“管道”做了什么。

回答 3 投票 0

Unity + C# - “解决依赖失败”

我的应用程序有 10 个 WCFService(平台 .NET Framework 3.5 上的 WCFService 应用程序)具有相同的软件和硬件,但只有 1 个采用此异常: 当用户登录时调用这个满足...

回答 2 投票 0

依赖注入--参数数量

我有一个需要大量依赖关系的类--在我看来,大量的依赖关系是8个或更多。它在IDE中看起来很丑陋,因为它会断行,在一个情况下,我有3行构造函数......

回答 1 投票 0

"ContainerControlledLifetimeManager的值只能设置一次",当使用开放通用的单子注册时。

我使用Unity.Container NuGet包5.11,我想注册一个开放的通用类型,使每个具体类型都是一个单子。背景:我在一个老式系统中工作。我在一个老式的ASP.NET WebForms中工作。

回答 1 投票 0

安装Unity.Mvc5的问题--UnityConfig.cs文件缺失

我试图将Unity.Mvc5 NuGet包安装到我的项目中,readme文件说要在我的global.asax文件中包含这一行。UnityConfig.RegisterComponents(); 当我在...

回答 1 投票 0

如何在.net 4.7项目中使用Unity容器解析EF Core上下文

我有一个问题,需要将我的项目升级到最新版本的.NET,当前所有项目都是使用Entity Framework 6的.NET 4.7或.NET Standard 2.0,然后通过WCF公开...]]] >

回答 1 投票 0

解决方案失败,错误:没有公共构造函数可用

我正在使用WCF Web服务,并且正在使用OLD unity 2.0。所以我用最新版本5.0更新了Unity和其他参考。我遇到异常:解析失败,并出现错误:No public ...

回答 1 投票 0

。net Core为何不识别在Unity.Microsoft.DependencyInjection中注册的服务?

为什么dot Core无法识别我精确安装的Unity.Microsoft.DependencyInjection来代替Core中的本机Dependency Injection?安装软件包后,在Program.cs中,我添加了...

回答 1 投票 0

Web api-在操作过滤器中提交数据库事务

编辑:此问题已从其原始版本完全修改。我的目标是在操作文件程序级别提交数据库事务。我正在使用Web API .Net Framework(4.8),以及...

回答 1 投票 0

如何对统一游戏APK进行反编译,对其进行修改然后重新编译?

有人知道如何对统一游戏APK进行反编译,对其进行修改然后再对其进行编译吗?还是没有人知道可以提供帮助的工具

回答 1 投票 -1

Unity IoC-如何指定要使用的注册

我有2个实现IMyInterface的类,我们将它们称为ClassA和ClassB。这里的问题是ClassA还需要IMyInterface,它应该是ClassB的实现。还有...

回答 1 投票 0

如何正确处理由Prism-Unity-WPF应用程序中的ContainerControlledLifetimeManager创建的依赖项

我主要在这篇MSDN文章之后得到了一个应用程序。这是我的bootstrapper类:内部类Bootstrapper:UnityBootstrapper {//使用Unity容器连接依赖项...

回答 1 投票 2

依赖项注入-参数数量

我有一个需要很多依赖的类-用我的话来说,很多依赖是8或更多。在IDE中看起来很丑陋,因为它会断行,并且在一种情况下,我有3行构造器...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.