我有一些课程(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做扩展方法吗?但这是行不通的,因为扩展方法不能通用。