是否有可能改变特定类型Ex:ConcurentBag<T>对S输入。我想使通用类加载数据和重装源集合(list<T>,ConcurrentBag<T>,字典)
这是我的代码:
public interface IRepositoryRelouder
{
private void ReloadData();
}
public interface IRepositoryLoader<out T> : IRepositoryRelouder
{
IEnumerable<T> LoadData();
}
public abstract class Test<T> : IRepositoryLoader<T>
{
protected ConcurrentBag<T> Source;
public abstract IEnumerable<T> LoadData();
private void void IRepositoryRelouder.Reload() =>
Source = new ConcurrentBag<T>(LoadData());
}
我想在父类中加载和重新加载数据并创建可以访问 Source 属性的子类。将 ConcurentBag 替换为下一个通用参数是否可行?
我想知道是否有可能是这样的:
public abstract class Test<T,S> : IRepositoryLoader<T>
{
protected S <T> Source;
public abstract IEnumerable<T> LoadData();
private void void IRepositoryRelouder.Reload() =>
Source = new S <T>(LoadData());
}
Where S is ConcurrentBag<T> or List<T>
更新
我想将重新加载机制分离到父母的类中。我可以有两种重载机制:简单和复杂(在重载方法中调用几个方法)。孩子们的班级可以访问存储库和工厂。有几个insert、create方法在子类中继承类的数据源上使用linqu。复杂的机制包含额外的字段和方法,所以我不想重复代码。在这种情况下怎么做会更好?我可以使用也实现 IEnumerable 的字典吗?
IRepositoryRelouder 接口仅用于在配置类中实现该接口的 ech 类调用 Reload 方法。
莫回无
摇曳的蔷薇
相关分类