gpt4 book ai didi

c# - 具有类约束的字段

转载 作者:太空宇宙 更新时间:2023-11-03 14:43:52 26 4
gpt4 key购买 nike

我有一个具有类类型约束的泛型类型的类

定义看起来像这样

public class ConnectedRepository<TEntity> where TEntity : class
{

然后我在下面的方法中使用它:

 public void LoadData<T>() where T:class
{
var GenRep = new ConnectedRepository<T>(c);
grdData.DataSource = GenRep.ToBindingList();
}

我的问题是我需要在包含此方法的类中的其他地方使用 GenRep,因此我需要在此方法之外定义它,但我找不到正确的语法

我需要这样的东西:

ConnectedRepository<??> GenRep;

但无法找出正确的类型定义

任何帮助将不胜感激

Code for my repository:
public class ConnectedRepository<TEntity> where TEntity : class
{
internal DbContext _context;
internal DbSet<TEntity> _dbSet;

public ConnectedRepository(DbContext context)
{
_context = context;
_dbSet = context.Set<TEntity>();
}

public IEnumerable<TEntity> ToBindingList()
{
_dbSet.Load();
return _dbSet.Local.ToBindingList();
}
public void SaveChanges()
{
_context.SaveChanges();
}

}

这将在包含 gridview 的用户控件中使用

public partial class DataView : DevExpress.XtraEditors.XtraUserControl 
{
TechnicalServicesContext c = new TechnicalServicesContext();


/// <summary>
///
/// </summary>
public DataView()
{
InitializeComponent();

}
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
public void LoadData<T>() where T:class
{
var GenRep = new ConnectedRepository<T>(c);
grdData.DataSource = GenRep.ToBindingList();

}
public void SaveData()
{

}


}

这是一个我想用于任何实体的可重复使用的显示

最佳答案

我不确定您是否清楚地知道您想要什么。如果我猜对了,您想在周围类的一个对象中的多个位置使用具有相同基础类型的泛型 ConnectedRepository 的相同实例,那么我会说您需要制作依赖于该类的类,而不仅仅是该类的单个方法。

public class ConnectedRepository<TEntity,T>
where TEntity : class
where T:class
{
ConnectedRepository<T> GenRep;

public ConnectedRepository(int c)
{
GenRep = new ConnectedRepository<T>(c); // now sure what c is, bt you could pass it to the constructor like this, if GenRep needs it
}

public void LoadData()
{
grdData.DataSource = GenRep.ToBindingList();
}

public void DoStuff()
{ // do something else with GenRep ?
}

}

关于c# - 具有类约束的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55455251/

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