私は持っている:
class Person
{
public Person(string name, int age)
{
this.Name = name;
}
public string Name { get; set; }
public virtual void Speak()
{
Console.Write("Hello I am a person");
}
public static T GenerateRandomInstance<T>() where T: Person
{
var p = new T("hello", 4); // error does not compile
// rondomize properties
return p;
}
}
class Student : Person
{
// constructor I call the base class here
public Student(string name, int age)
: base(name, age)
{
}
public override void Speak()
{
Console.Write("Hello I am a student");
}
}
私が抱えている問題は、私がそうするときです:
Student.GenerateRandomInstance();
Person
の代わりにを取得しStudent
ます。GenerateRandomInstance
Person ではなく Student を返すようにメソッドを修正するにはどうすればよいですか。人を生徒にキャストするとエラーが発生する