это вызывает неприятный эффект необходимости звонить SomeClass.Random.Next()
нет, это не так: рассмотрите тип как:
internal static class Foo
{
private static readonly Random s_random = new Random();
// todo: any thread safety concerns
public static int Rand() => s_random.Next();
public static int Rand(int minValue, int maxValue) => s_random.Next(minValue, maxValue);
}
Теперь вы можете добавьте using static Declaration.Foo;
вверху файла, который хочет его использовать, и , теперь , вы можете просто использовать Rand()
без чего-либо еще.