在ASP.NET Core Dependency Injection中使用非泛型实现注册通用接口

问题描述 投票:2回答:1

我有一个通用的界面:

public interface IValidationResult<T> where T : struct {
        T Status { set; get; }
        User User { set; get; }
}

以及实现通用接口的类:

public class ValidationResult : IValidationResult<ValidationResult.ValidationStatus> {
    public enum ValidationStatus { UserNotFound, InvalidPassword, Valid, UserBlankOrSpace }
    public ValidationStatus Status { set; get; }
    public User User { set; get; }

    public ValidationResult (User user, ValidationStatus status) {
        if (user == null) {
            throw new ArgumentNullException ("The User is Null");
        }
        Status = status;
        User = user;
    }
}

我想注册我的界面,所以我可以使用DI(依赖注入),如果我的类和接口都是通用的我将它们注册为:

services.AddScoped(typeof(IGenericRepository<>), typeof(EFGenericRepository<>));

但是可以使用内置的依赖注入在ASP.NET Core中注册一个非泛型实现的泛型接口吗?谢谢

c# generics dependency-injection asp.net-core
1个回答
4
投票

怎么样

services.AddScoped<IValidationResult<ValidationResult.ValidationStatus>,
                   ValidationResult>();
© www.soinside.com 2019 - 2024. All rights reserved.