如何制作带有lambda参数的方法?

时间:2019-01-04 15:27:07

标签: c# generics lambda

我有一些课程(T1,T2,T3)。它们之间的唯一区别是属性的数量。每个属性都在Generator的帮助下设置,Generator将每个属性确定为Distribution中的随机数(正态,指数等)。 我需要实现方法“ For”和“ Set”,以便此代码起作用:

var generator = new Generator<T2>()
    .For(z => z.A)
    .Set(newDistribution)
    .For(z => z.B)
    .Set(anotherNewDistribution);
在For()之后的

ALSO 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);
    }
}

但是接下来我该怎么办?为double做扩展方法吗?但这是行不通的,因为扩展方法不能通用。

0 个答案:

没有答案