需要帮助实现接口

本文关键字:接口 实现 帮助 | 更新日期: 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 {} 

在此定义之后InterfaceAbstractClass

public interface IBase {
void GetAllByName(string name, EventHandler<BaseEventArg > eh);
...

}

只是给你一些想法,我很难写一些真正具体的东西,因为这取决于你的实现。