Как я могу сделать метод с параметром лямбда? - PullRequest
0 голосов
/ 04 января 2019

У меня есть несколько классов (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);
    }
}

Но что мне делать дальше? Сделать метод расширения для двойного? Но это не сработает, потому что метод расширения не может быть универсальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...