小编Tar*_*ras的帖子

.NET Core依赖注入,解析泛型接口

我在 ASP.NET Core 依赖注入方面遇到问题,无法解析 IServiceProvider 的通用接口。这是我的设置:

通用接口:

public interface IRequest<out TResponse> {...}

public interface IRequestHandler<TRequest, TResult> 
    where TRequest : IRequest<TResult> {...}
Run Code Online (Sandbox Code Playgroud)

具体实现:

public class GetUsersQuery : IRequest<IEnumerable<GetUsersResult>> {...}

public abstract class RequestHandler<TRequest, TResult> 
    : IRequestHandler<TRequest, TResult>
    where TRequest : IRequest<TResult> {...}

public class GetUsersQueryHandler
    : RequestHandler<GetUsersQuery, IEnumerable<GetUsersResult>> {...}
Run Code Online (Sandbox Code Playgroud)

然后我有一个服务工厂,我像这样注册依赖注入:

public static void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<IRequestHandler<GetUsersQuery, 
    IEnumerable<GetUsersResult>>, GetUsersQueryHandler>();
}
Run Code Online (Sandbox Code Playgroud)

我可以像这样成功解决我的处理程序:

var handler = 
_services.GetService<IRequestHandler<GetUsersQuery, IEnumerable<GetUsersResult>>>();
Run Code Online (Sandbox Code Playgroud)

但是,我希望在这个工厂中有一个通用方法,它接收 IRequest 的具体实现并返回适当的处理程序,而无需事先知道确切的类型,如下所示:

public Task<TResult> Execute<TResult>(IRequest<TResult> request)
{
    var handler =
        _services.GetService<IRequestHandler<IRequest<TResult>, TResult>>();
    return handler.ExecuteAsync(request); …
Run Code Online (Sandbox Code Playgroud)

c# generics dependency-injection .net-core

5
推荐指数
1
解决办法
8530
查看次数

无法在 Azure DevOps Pipelines 的命令行脚本任务中克隆 git 存储库

我创建了 azure devops 管道,我需要从另一个 git 存储库下载代码。根据我在某处读过的推荐解决方案,我使用 git clone 命令添加了一个命令行脚本任务。不幸的是,这不起作用。

我得到的错误是:远程:TF200016:以下项目不存在:My0Test0Project。验证项目名称是否正确以及该项目是否存在于指定的 Azure DevOps 服务器上。致命:存储库 ' https://dev.azure.com/myCompany/My0Test0Project/_git/Service.Azure.Core/ ' 未找到

我在 Azure 中的项目有空间,也许 azure 中存在与此相关的错误?有人知道任何解决方法吗?

这是我已经尝试过的一些代码:

git -c http.extraheader="AUTHORIZATION: Basic bXl1c2VyOmxtNjRpYTYzb283bW1iYXp1bnpzMml2eWxzbXZoZXE2azR1b3V2bXdzbnl5b3R5YWlnY2E=" clone https://dev.azure.com/myCompany/My%20Test%20Project/_git/Service.Azure.Core
Run Code Online (Sandbox Code Playgroud)
git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" clone https://dev.azure.com/myCompany/My%20Test%20Project/_git/Service.Azure.Core
Run Code Online (Sandbox Code Playgroud)
git clone https://oauth:lm64ia63oo7mmbazunzs2ivylsmvheq6k4uouvmwsnyyotyaigca@dev.azure.com/myCompany/My%20Test%20Project/_git/Service.Azure.Core
Run Code Online (Sandbox Code Playgroud)
git clone https://test:$(System.AccessToken)@dev.azure.com/myCompany/My%20Test%20Project/_git/Service.Azure.Core
Run Code Online (Sandbox Code Playgroud)

azure-devops azure-pipelines

5
推荐指数
3
解决办法
4318
查看次数