C# 如何分解这段代码

C# 如何分解这段代码,c#,asp.net,factorization,C#,Asp.net,Factorization,我在一个MVC项目上工作,我有一些课程总是一样的。我想做的是找到一种分解代码的方法,这样我可以在每次需要时快速实现它 下面是其中一个类的示例 public class FeedbackManager { public List<Feedback> List = new List<Feedback>(); public FeedbackManager(){} public List<Feedback> GetAll() { ... } p

我在一个MVC项目上工作,我有一些课程总是一样的。我想做的是找到一种分解代码的方法,这样我可以在每次需要时快速实现它

下面是其中一个类的示例

public class FeedbackManager
{
   public List<Feedback> List = new List<Feedback>();
   public FeedbackManager(){}
   public List<Feedback> GetAll() { ... }
   public Feedback GetById(string id) { ... }
   public void Edit(string id, Feedback item) { ... }
   public void Delete(string id) { ... }
   public void Add(Feedback item) { ... }
   public void Serialize() { ... }
   public static FeedbackManager DeSerialize() { ... }
}
公共类反馈管理器
{
公共列表=新列表();
公共反馈管理器(){}
公共列表GetAll(){…}
公共反馈GetById(字符串id){…}
公共无效编辑(字符串id,反馈项){…}
公共无效删除(字符串id){…}
公共无效添加(反馈项){…}
public void Serialize(){…}
公共静态反馈管理器反序列化(){…}
}
我试图做的是创建一个接口并用“对象”更改所有“反馈”,这样当我实现接口时,我用“反馈”更改“对象”,但没有成功。如果您有一些技巧来实现这种分解,我会感兴趣的

公共接口IManager
public interface IManager<T>
{
   public List<T> GetAll();
   public T GetById(string id);
   public void Edit(string id, T item);
   public void Delete(string id);
   public void Add(T item);
   public void Serialize();
}
{ 公共列表GetAll(); 公共T GetById(字符串id); 公共作废编辑(字符串id,T项); 公共作废删除(字符串id); 公共作废新增(T项); public void Serialize(); }

公共抽象类抽象管理器
{
公开名单;
受保护的抽象管理器(){
列表=新列表();
}
公共摘要列表GetAll();
公共摘要T GetById(字符串id);
公共摘要作废编辑(字符串id,T项);
公共摘要作废删除(字符串id);
公开摘要作废增加(T项);
公共摘要void Serialize();
}
公共接口IManager
{
公共列表GetAll();
公共T GetById(字符串id);
公共作废编辑(字符串id,T项);
公共作废删除(字符串id);
公共作废新增(T项);
public void Serialize();
}

公共抽象类抽象管理器
{
公开名单;
受保护的抽象管理器(){
列表=新列表();
}
公共摘要列表GetAll();
公共摘要T GetById(字符串id);
公共摘要作废编辑(字符串id,T项);
公共摘要作废删除(字符串id);
公开摘要作废增加(T项);
公共摘要void Serialize();
}
根据对您答案的#1评论,它听起来非常像泛型的一个好用例:

public interface IManager<T>
{
   public List<T> List = new List<T>();
   public List<T> GetAll() { ... }
   public T GetById(string id) { ... }
   public void Edit(string id, T item) { ... }
   public void Delete(string id) { ... }
   public void Add(T item) { ... }
   public void Serialize() { ... }
}
公共接口IManager
{
公共列表=新列表();
公共列表GetAll(){…}
公共T GetById(字符串id){…}
公共无效编辑(字符串id,T项){…}
公共无效删除(字符串id){…}
公共无效添加(T项){…}
public void Serialize(){…}
}
大致是这样的?

根据对您答案的#1评论,它听起来非常像泛型的一个好用例:

public interface IManager<T>
{
   public List<T> List = new List<T>();
   public List<T> GetAll() { ... }
   public T GetById(string id) { ... }
   public void Edit(string id, T item) { ... }
   public void Delete(string id) { ... }
   public void Add(T item) { ... }
   public void Serialize() { ... }
}
公共接口IManager
{
公共列表=新列表();
公共列表GetAll(){…}
公共T GetById(字符串id){…}
公共无效编辑(字符串id,T项){…}
公共无效删除(字符串id){…}
公共无效添加(T项){…}
public void Serialize(){…}
}

类似于这些方面的东西?

您正在寻找仿制药吗<代码>公共类管理器?你的问题有点不清楚。我也不清楚你想做什么。这看起来更像是一个普通的c#问题。有几种设计模式可以使用,但如果没有更多关于如何使用代码的信息,就很难为您指出正确的方向。您是否在寻找泛型<代码>公共类管理器?你的问题有点不清楚。我也不清楚你想做什么。这看起来更像是一个普通的c#问题。有几种设计模式可以使用,但是如果没有更多关于如何使用代码的信息,就很难为您指出正确的方向。接口无法定义字段或静态任何内容。是的,谢谢!我一直想知道那些“T”字是什么。谢谢你们两位!根据评论删除了静态,完全错过了:)很高兴我们有csc来抓那些坏人,可惜它没有在这里运行:)接口不能定义字段或静态任何东西。是的,谢谢!我一直想知道那些“T”字是什么。谢谢你们两位!根据评论删除了静态,完全错过了:)很高兴我们有csc来抓那些坏人,可惜它没有在这里运行:)是的,谢谢!我一直想知道那些“T”字是什么。谢谢你们两位!没问题。T实际上可以是任何东西,它只是一个标准,用来表示一个通用的概念。如果T始终表示一个数据实体,那么如果将泛型用作键值,则可以改为T、TEntity或TKey。详细信息请参见:因为我们正在播放“correct more”,所以您的GetById将返回一个具体的类型,该类型耦合了不太抽象的类@Timothystepanski哎呀,没拔出来。接得好。是的,谢谢!我一直想知道那些“T”字是什么。谢谢你们两位!没问题。T实际上可以是任何东西,它只是一个标准,用来表示一个通用的概念。如果T始终表示一个数据实体,那么如果将泛型用作键值,则可以改为T、TEntity或TKey。详细信息请参见:因为我们正在播放“correct more”,所以您的GetById将返回一个具体的类型,该类型耦合了不太抽象的类@Timothystepanski哎呀,没拔出来。抢手货