【发布时间】:2020-04-30 04:31:13
【问题描述】:
我需要从不同类型的对象中创建 AlertModelWrapper 对象。为此,我只能将学生传递给 StudentAlertGenerator,而教师只能传递给 TeacherAlertGenerator。这里的接口方法应该是什么?如果我接受对象,我不能要求学生只能有学生类型。我的设计滞后在哪里?
public class StudentAlertGenerator : IAlertGeneratorType
{
private readonly IDateTransformationService transformationService
public StudentAlertGenerator(IDateTransformationService transformationService)
{
this.trnasformationservice =transformationservice
}
public AlertModelWrapper CreateAlertTypeModel(Student student)
{
return new AlertModelWrapper ()
{
ID= "std_"+student.Id,
AlertModel = new AlertModel () { alertDetails=student.Name + "has an alert on " +transformationService.Transform(DateTime.Now())}
};
}
}
和老师alertGenerator如下
public class TeacherAlertGenerator : IAlertGeneratorType
{
private readonly IDateTransformationService transformationService
public StudentAlertGenerator(IDateTransformationService transformationService)
{
this.trnasformationservice =transformationservice
}
public AlertModelWrapper CreateAlertTypeModel(Teacher teacher)
{
return new AlertModelWrapper ()
{
ID= "tea_"+teacher.Id,
AlertModel = new AlertModel () { alertDetails=teacher.Name + "has an alert on " +transformationService.Transform(DateTime.Now())}
};
}
}
----编辑---- 我的基本要求是我需要在迭代器中调用它
List<IAlertGeneratorType> alerts=DecissionEngine.GetAlerts();
foreach(var alert in alerts)
{
//make object x from decission engine response(it will tell what type of object and id)
//api push on alert.CreateAlertTypeModel(x);
}
在这里我应该可以通过 x。但是x的类型我现在不知道。那么我的界面应该是什么?还是这是设计问题?
【问题讨论】:
-
如果您不知道自己有什么问题,那么帮不了您。无法通过查看代码(至少看起来正确)来了解您希望此代码的外观。请edit 发帖说明您想要实现的目标。
-
@AlexeiLevenkov 我的英语可能有点糟糕......对不起。我的查询是这里的接口 IAlertGeneratorType 应该是什么?我需要在调用 IAlertGeneratorType.CreateAlertTypeModel() 的迭代器中使用它
标签: c# oop design-patterns