gpt4 book ai didi

c# - 我在实现通用存储库时遇到问题

转载 作者:行者123 更新时间:2023-11-30 22:54:31 25 4
gpt4 key购买 nike

我想构建通用存储库以使其易于实现..现在我想创建接口(interface)以在我的域服务中的依赖注入(inject)中使用它,但我不能

我想构建通用存储库以使其易于实现。我创建了通用抽象存储库来获取实体及其上下文。现在我想创建接口(interface)以在我的域服务中的依赖注入(inject)中使用它

我的通用存储库:

 public abstract class Repository<T,K>:IRepository<T,K>
{
private Type t;
private K _Context;
private bool disposed = false;
public Repository(K Context)
{
_Context = Context;
}
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
_Context.Dispose();
}
}
this.disposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
public void Delete(object id)
{
T t = _Context.Set<T>().Find(id);
_Context.Set<T>().Remove(t);
}

public T Get(object id)
{
return _Context.Set<T>().Find(id);
}

public IEnumerable<T> getList()
{
return _Context.Set<T>().ToList();
}

public void insert(T t)
{
_Context.Set<T>().Add(t);
}

public void Save()
{
_Context.SaveChanges();
}

public void Update(T t)
{
_Context.Entry(t).State = EntityState.Modified;
}
}
}

我的存储库界面:

    public interface IRepository<T,K> where T : BaseEntity where K : BaseContext<K>
{
T Get(object id);
IEnumerable<T> getList();
void insert(T t);
void Delete(object id);
void Update(T t);
void Save();

}

我的错误是 “类型‘T’不能用作泛型类型中的类型参数‘T’....类型‘T’不能用作泛型中的类型参数‘T’类型或方法“IRepository”。没有从“T”到“DomainModel.BaseEntity”的装箱转换或类型参数转换,我想知道如何解决这个问题

最佳答案

您还必须在类 Repository 上放置where 约束,即:

public abstract class Repository<T,K>:IRepository<T,K> where T : BaseEntity where K : BaseContext<K>

这是因为C#对Repository 中的T一无所知,但它需要满足IRepository where 条件, K>

关于c# - 我在实现通用存储库时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56206987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com