У меня есть несколько классов (T1, T2, T3). Единственная разница между ними - это количество свойств. Каждое свойство устанавливается с помощью генератора, который определяет каждое свойство как случайное число из распределения (нормальное, экспоненциальное и т. Д.)
Мне нужно реализовать методы 'For' и 'Set', чтобы этот код работал:
var generator = new Generator<T2>()
.For(z => z.A)
.Set(newDistribution)
.For(z => z.B)
.Set(anotherNewDistribution);
ТАКЖЕ For () после For () должно быть невозможно:
generator.For(z => z.A).For(z => z.B).Set(d) ← is not valid!
Вот что я попробовал:
public class Generator<T>
{
public T generatedClass;
public T Generate(Random rnd)
{
...........
}
public double For(Func<T, double> func)
{
return func(generatedClass);
}
}
Но что мне делать дальше? Сделать метод расширения для двойного? Но это не сработает, потому что метод расширения не может быть универсальным.