需要帮助实现接口
本文关键字:接口 实现 帮助 | 更新日期: 2023-09-27 18:01:36
在我的应用程序中,我想使我的接口更通用。我有两个模型,CampaignModel和StringModel,它们都使用相同的方法,但其中有不同的参数,即
CampaignModel:
void GetAll(EventHandler<GetAllCampaignsCompletedEventArgs> eh);
void GetAllByName(string name, EventHandler<GetCampaignCompletedEventArgs> eh);
void GetAllByID(long id, EventHandler<GetAllCampaignsByIDCompletedEventArgs> eh);
void Add(Campaign entity, EventHandler<CreateCampaignCompletedEventArgs> eh);
void Update(Campaign entity, EventHandler<UpdateCampaignCompletedEventArgs> eh);
void Delete(Campaign entity, EventHandler<DeleteCampaignCompletedEventArgs> eh);
StringsModel:
void GetAll(EventHandler<GetAllCampaignStringsCompletedEventArgs> eh);
void GetAllByName(string name, EventHandler<GetCampaignStringByIdentifierCompletedEventArgs> eh);
void GetAllByID(long id, EventHandler<EventArgs> eh);
void Add(CampString entity, EventHandler<EventArgs> eh);
void Update(CampString entity, EventHandler<EventArgs> eh);
void Delete(CampString entity, EventHandler<EventArgs> eh);
我只是需要的方向,如何创建一个更通用的接口,我可以使用。这样做的原因是我只想为每个模型提供一组视图。我们只有一个Add,Update和Delete视图将调用来自Campaign模型或字符串模型的方法。如果你有什么好主意,我将不胜感激。
谢谢,斯图尔特。
如果您查看代码,您可以看到,至少在您提供的函数中,两个类之间的变化是参数的类型。这里的常用方法是为每个公共组定义一个Base类型,因此下面是伪代码:
public class GetCampaignCompletedEventArgs : BaseEventArg {}
public class GetCampaignStringByIdentifierCompletedEventArgs: BaseEventArg {}
...
...
public class Campaign : BaseCampaign {}
public class CampString: BaseCampaign {}
在此定义之后Interface或AbstractClass
public interface IBase {
void GetAllByName(string name, EventHandler<BaseEventArg > eh);
...
}
只是给你一些想法,我很难写一些真正具体的东西,因为这取决于你的实现。