Если я вас правильно понял, вы хотите объявить метод интерфейса, который может работать с классами Student и Teacher.
Для этого вы можете создать интерфейс - например, IPerson - со свойствами Id и Name:
public interface IPerson
{
int Id {get;set;}
string Name {get;set;}
}
Затем вы должны реализовать этот интерфейс с вашими классами:
public class Student: IPerson
public class Teacher: IPerson
После этого вы можете изменить тип параметра в вашем методе:
public interface IAlertGeneratorType
{
public AlertModelWrapper CreateAlertTypeModel(IPerson person);
}
Этот метод будет работать с обоими занятий: ученик и учитель
public class AlertGenerator : IAlertGeneratorType
{
private readonly IDateTransformationService transformationService
public StudentAlertGenerator(IDateTransformationService transformationService)
{
this.trnasformationservice =transformationservice
}
public AlertModelWrapper CreateAlertTypeModel(IPerson person)
{
return new AlertModelWrapper ()
{
ID= "tea_"+person.Id,
AlertModel = new AlertModel () { alertDetails=person.Name + "has an alert on " +transformationService.Transform(DateTime.Now())}
};
}
}
Пример:
var generator = new AlertGenerator();
var teacher = new Teacher();
var student = new Student();
generator.CreateAlertTypeModel(teacher);
generator.CreateAlertTypeModel(student);