【发布时间】:2011-08-03 19:59:04
【问题描述】:
我不知道如何正确地做到这一点。我找到了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 类覆盖了枚举 Sex;Weapon 类覆盖了枚举 WeaponType,等等.);
这也是低效的,因为它需要我编写代码,而这些代码必须为同一件事一遍又一遍地重新实现。因此,显而易见的解决方案是创建一个 Random 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)];
}
}
有接受者吗?
【问题讨论】: