Используя отражение, возможно ли создать экземпляр типа, который наследуется от абстрактного базового класса, используя конструктор абстрактного базового класса?То есть без наследующего класса, имеющего собственный конструктор?Примерно как ниже, но выдает ошибку, потому что вы, конечно, не можете создать экземпляр абстрактного класса:
abstract class PersonBase
{
string Name;
public PersonBase(string _name) { Name = _name; }
}
class Person : PersonBase
{
}
public static T GetPerson<T>(string name) where T : PersonBase, new()
{
ConstructorInfo info = typeof(T).BaseType.GetConstructor(new Type[]
{ typeof(string) });
object result = info.Invoke(new object[] { name });
return (T)result;
}
Вы можете сделать эту работу, выполнив новый T {(назначить свойства здесь)}, ноКонечно, это не конструктор, и свойства должны быть открытыми и т. д.