Это невозможно, базовым типом enum
являются различные целочисленные типы.Из документации :
Допустимые типы перечислений: byte
, sbyte
, short
, ushort
, int
, uint
,long
, или ulong
.
Кроме того, я даже не думаю, что то, что вы пытаетесь сделать, имеет смысл.Когда вы хотите оружие, вы действительно хотите один и тот же экземпляр каждый раз?Я сомневаюсь в этом.
То, что вы действительно хотите, я думаю, это фабрика.В его самой наивной форме вы можете сказать:
public enum WeaponType {
Fists,
Sword,
Bow,
Staff
}
public class WeaponFactory {
public Weapon Create(WeaponType weaponType) {
switch(weaponType) {
case WeaponType.Fists:
return new WeaponFists();
case WeaponType.Sword:
return new WeaponSword();
case WeaponType.Bow:
return new WeaponBow();
case WeaponType.Staff:
return new WeaponStaff();
default:
throw new ArgumentOutOfRangeException("weaponType");
}
}
}
Теперь вы можете сказать:
var weapon = weaponFactory.Create(WeaponType.Fists);