у меня есть:статический метод возвращает объект это содержащий класс типа
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. Кастинг человека студенту дает мне ошибку
+1 спасибо! человек конструктор принимает 2 аргумента, хотя ... Я должен был бы упомянуть, что я не знал вас, где будет опубликовать этот хороший ответ;) –
@TonoNam - это параметры, которые будут одинаковыми для каждого подтипа 'Person' или могут они разные? –
Я работаю над редактированием, которое будет там менее чем за 1 минуту. Большое спасибо за помощь ... –