Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET核心中的DI未解析泛型类型_C#_Asp.net Core_.net Core - Fatal编程技术网

C# .NET核心中的DI未解析泛型类型

C# .NET核心中的DI未解析泛型类型,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,我有一个简单的通用存储库,它接受类型T,T被约束为类。非常直截了当的东西,但是.NETCore不能满足依赖性。不确定,我做错了什么 错误: System.ArgumentException: GenericArguments[0], 'Building.Manager.Domain.Society', on 'Building.Manager.Repository.GenericRepository`1[T]' violates the constraint of type 'T'. ---&

我有一个简单的通用存储库,它接受类型T,T被约束为类。非常直截了当的东西,但是.NETCore不能满足依赖性。不确定,我做错了什么

错误:

System.ArgumentException: GenericArguments[0], 'Building.Manager.Domain.Society', on 'Building.Manager.Repository.GenericRepository`1[T]'
 violates the constraint of type 'T'. ---> System.TypeLoadException: GenericArguments[0], 'Building.Manager.Domain.Society', on 'Building
.Manager.Repository.GenericRepository`1[T]' violates the constraint of type parameter 'T'.


 public class Society : BaseEntity
    {
        public string Name { get; set; }
        public string Phone { get; set; }
        public Address Address { get; set; }
        public IEnumerable<Flat> Flats { get; set; }

        public Society() => this.Flats = new List<Flat>();
    }
System.ArgumentException:GenericArguments[0],'Building.Manager.Domain.Society',关于'Building.Manager.Repository.GenericRepository'1[T]'
违反类型“T”的约束。-->System.TypeLoadException:GenericArguments[0],“Building.Manager.Domain.Society”,关于“Building”
.Manager.Repository.GenericRepository“1[T]”违反了类型参数“T”的约束。
公共阶级社会:基本实体
{
公共字符串名称{get;set;}
公用字符串电话{get;set;}
公共广播地址{get;set;}
公共IEnumerable单位{get;set;}
公共社会()=>this.Flats=新列表();
}
BaseEntity是一个具有受保护构造函数的简单抽象类

public interface IGenericRepository<T> where T : class
    {}




public class GenericRepository<T> where T : class, IGenericRepository<T>
    {
        private readonly DbContext _context;

        protected GenericRepository() { }
        public GenericRepository(DbContext context)
        {
            this._context = context;
        }}
公共接口IGenericRepository,其中T:class
{}
公共类GenericRepository,其中T:class,IGenericRepository
{
私有只读DbContext\u context;
受保护的GenericRepository(){}
公共GenericRepository(DbContext上下文)
{
这._context=context;
}}
在StartUp.cs上配置方法,如下所示:

public void ConfigureServices(IServiceCollection services)
        {
            services.AddScoped<DbContext, ApplicationDbContext>();
            services.AddScoped(typeof(IGenericRepository<>), typeof(GenericRepository<>));
            services.AddScoped<ISocietyService, SocietyService>();

            services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info { Title = "Building Manager API", Version = "v1" });
            });
        }
public void配置服务(IServiceCollection服务)
{
services.addScope();
服务.addScope(typeof(IGenericRepository)、typeof(genericpository));
services.addScope();
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddSwaggerGen(c=>
{
c、 SwaggerDoc(“v1”,新信息{Title=“Building Manager API”,Version=“v1”});
});
}

谢谢您的帮助。

您可能想让
GenericRepository
实现该接口,但是您对
T
进行了限制。你想要

public class GenericRepository<T> : IGenericRepository<T> where T : class
公共类GenericRepository:IGenericRepository其中T:class
不是

公共类GenericRepository:其中T:class,IGenericRepository

您可能想让
GenericRepository
实现该接口,但您对
T
进行了限制。你想要

public class GenericRepository<T> : IGenericRepository<T> where T : class
公共类GenericRepository:IGenericRepository其中T:class
不是

公共类GenericRepository:其中T:class,IGenericRepository

T是类类型还是IGenericRepository?您是否可能想将:public class GenericRepository:IGenericRepository放置在T:class的位置,而不是放置在T:class的位置,IGenericRepository?T是类类型还是IGenericRepository?你可能是想把:public class GenericRepository:IGenericRepository放在T:class的位置,而不是T:class,IGenericRepository的位置?