2

所以我得到了一个类人,它包含年龄、性别、姓名(和主键 ID)。然后我得到了两个人的子类:

Teacher(Class(French, math, english etc etc), Sick(boolean))

student(Class(French, math, english etc etc), Sick(boolean)) 
//so these 2 got the same 5 fields.

现在我想制作一种可以创建所有 2 个的方法。(实际上还有更多,但对于我将只使用这两个的问题来说还可以)

这就是我的想法:

public Person CreateNewPerson (int age, boolean sex, string name, int class, boolean sick, HELP HERE plz OFTYPE<TEACHER OR STUDENT>)
{
    var Person1 = new Person { Age = age, Sex = sex, ....... };
    // but now to return it as the correct type I got no clue what todo
    return (OFTYPE)Person1; // ofc this doesn t work but I hope you understand the problem here
}

希望有人能在这里帮助我,因为 atm 我正在为我得到的每个子类制作一个单独CreateNewTeacherCreateNewStudent等。(我得到了 5 个 ^^)

提前致谢!

PS:它们稍后保存在不同的表中,我不希望它们都在同一个类中,因为我知道我可以像 boolean at person 一样去添加:IsPersonChild然后 true 或 flase 但不

4

2 回答 2

4

建议的班级设置:

public class Person
{
    public string Name { get; set; }
}

public class Teacher : Person
{
}

public class Student : Person
{
}

public static class PersonFactory
{
    public static T MakePerson<T>(string name) where T: Person, new()
    {
        T person = new T {Name = name};
        return person;
    }
}

用法:

Teacher teacher = PersonFactory.MakePerson<Teacher>("Mrs. Smith");

Student student = PersonFactory.MakePerson<Student>("Johnny");
于 2012-07-23T08:58:02.717 回答
1

使用可以使用这样的泛型:

public T CreateNewPerson<T> (int age, boolean sex, string name, int class, boolean sick) where T : Person, new()
{
    var Person1 = new T { Age = age, Sex = sex, ....... };
    return Person1; 
}
于 2012-07-23T08:59:49.410 回答