Мне нужно ограничить то, что я могу поместить в конструктор в RunTime.У меня есть простые занятия:
class Human
{
public string Name { get; set; } = "John";
public int Age { get; set; } = 20;
public bool IsAlive { get; set; } = true;
public override string ToString()
{
return $"Name: {Name}, Age: {Age}, Is alive: {IsAlive}";
}
}
class Animal
{
public string Type { get; set; } = "Bat";
public int Weight { get; set; } = 33;
public bool IsAlive { get; set; } = true;
public override string ToString()
{
return $"Type: {Type}, Weight: {Weight}, Is alive: {IsAlive}";
}
}
class Generics<T> where T : class, new()
{
public Generics()
{
T type = new T();
Console.WriteLine(type.GetType());
Console.WriteLine(type.ToString());
}
}
Есть ли способ, которым пользователь может сказать в RunTime: «Тип T может быть только человеком» или «Тип T может быть только животным».Поэтому, если пользователь (например, в switch) говорит: «Тип T может быть только человеком», то попытка создать конструктор, где тип T является животным, приведет к ошибке.
Или, если пользователь говорит «Тип T может быть только животным», то попытка создать конструктор, где тип T является человеком, приведет к ошибке.
Другой пример: пользователь говорит: «Тип Tможет быть только Животное ":
Тогда выполнение: Generics<Human> human = new Generics<Human>();
приведет к ошибке.
Или, конечно, если пользователь говорит" Тип T может быть только человеком ", это приведет кошибка:
Generics<Animal> animal = new Generics<Animal>();
Я не знаю, возможно ли это, но если у вас есть решение, я буду очень рад.Спасибо.