Вы можете установить класс ObjectRandomizer
, который принимает массив объектов, использует отражение для проверки объекта на предмет закрытых членов, а затем использует отражение, чтобы установить случайное значение для этого члена. Это работает, только если вам все равно, как выглядят случайные данные для объекта.
В качестве альтернативы, вы можете создать набор классов для каждого объекта данных, который генерирует для них случайные данные. Это может хорошо работать, если вы не хотите включать методы случайной генерации в реальные сборки. Например, если у вас был класс Person
, вы могли бы иметь класс PersonRandomizer
в тестовой сборке. В вашем тестовом классе (или в классе Randomizer
) вы можете использовать отражение, чтобы найти тип PersonRandomizer
, и, если он существует, вызвать PersonRandomizer.Randomize(Person p)
.
Если вы согласны с предложением yahya, я предлагаю создать интерфейс IRandomizable
для объектов, поддерживающих рандомизацию, ИЛИ пометить их новым атрибутом Randomizable
, который вы можете обнаружить во время выполнения.