Changing enum values

Hello! I currently have a system set up where I use an enum called WeaponType that has the values Sword, Greatsword, Lance, Fists. I want to be able to change these weapons with a button press depending on whether some conditions are true. To do this, I created an int data type that gets the values of the enum. Like this,

private int numberOfWeaponTypes = System.Enum.GetValues(typeof(WeaponType)).Length;

I have a function set up to switch between weapon types, which everything is working just fine right now. However, eventually, I want to be able to give the player the option to rearrange their weapon order, as I do not want Sword, Greatsword, Lance, Fists to be the order for the whole game. How would I go about doing this?

I appreciate any insight!

System.Array weaponTypes;

void Start(){
	weaponTypes = System.Enum.GetValues (typeof(WeaponType));
	SwitchOrder (0, 1, weaponTypes); //Switch 1st weapon with 2nd
}

void SwitchOrder(int a, int b, System.Array values){
	var temp = values.GetValue (b);
	values.SetValue (values.GetValue (a), b);
	values.SetValue (temp, a);
}