Я в тупик о том, как сделать это правильно. Я нашел this и не уверен, может ли это быть дубликатом.
Я начну с самого начала. Я смог реализовать предложение, данное в теме, которую я разместил, создав класс специально для рандомизации этого перечисления, которое выглядело следующим образом:
public class Foo
{
public static Random rand = new Random();
public static FooEnum[] values;
public static FooEnum GetRandomFoo()
{
values = (FooEnum[]) Enum.GetValues(typeof(FooEnum));
return values[rand.Next(0, Values.Length)];
}
public enum FooEnum { A, B, C}
}
Это сработало довольно хорошо. Единственная проблема заключалась в том, что это, очевидно, привело к тому, что я обернул класс над своим перечислением, и поэтому всегда требовал от меня двух разных способов сказать одно и то же (например, класс Gender переносит enum Sex; класс Weapon переносит enum WeaponType и т.д. .);
Это также было неэффективно, потому что это потребовало бы от меня написания кода, который должен был бы переопределяться снова и снова для одной и той же вещи. Поэтому очевидным решением этого является создание класса Random Enum, который может принимать любой тип enum и рандомизировать его, используя следующий метод.
У кого-нибудь есть идеи, как это сделать? Мой метод не совсем работает:
public class EnumRandomizer
{
private Random rand;
private Type[] values;
private int randomizerId;
private static int randomizerCount = 0;
public EnumRandomizer ()
{
rand = new Random();
randomizerId = randomizerCount;
randomizerCount++;
}
public Type RandomEnum(Type type)
{
values = (Type[]) Enum.GetValues(type);
return values[rand.Next(0, values.Length)];
}
}
Кто-нибудь принимает?