2

だから私はクラスパーソンを手に入れました、そしてそれは年齢、性別、名前(そして主キーID)を含んでいます。次に、人の2つのサブクラスを取得しました。

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つすべてを作成できる1つのメソッドを作成します。(実際にはさらに多くのことがありますが、これら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
}

誰かがここで私を助けてくれることを願っています。なぜなら、私は取得したサブクラスごとに個別CreateNewTeacherのなどを作成しているからです(そして私はそれらのうちの5つを取得しました^^)CreateNewStudent

前もって感謝します!

PS:後で別のテーブルに保存されます。すべて同じクラスに入れたくないのは、人にブール値のように追加できることを知っているからですIsPersonChild

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 に答える