public int Id { get; set; }
public string Name { get; set; }
public override string ToString() => $"Name: {Name}\nId: {Id}";
public class Sword : Item
public Sword() { Name = "Sword"; }
public class MagicWand : Item
public MagicWand() { Name = "MagicWand"; }
public static T GenerateFromId<T>(int id)
public static void Main()
var item = ItemManager.GenerateFromId<Sword>(1789);
Console.Write(item.ToString());