是否可以在生成器方法lambda中使用生成器的结果对象?像这样:
更具体地说,假设我有课程:
public class Foo
{
public int MyProp { get; set; }
public IBar FoosBar { get; set; }
public Foo(Bar bar) => FoosBar = bar;
public bool Check()
{
int result = FoosBar.DoThis();
return result < MyProp;
}
}
public interface IBar
{
public int DoThis(int value);
}
public class AnonymousBar : IBar
{
private Func<int, int> _doer;
public AnonymousBar(Func<int, int> doer) => _doer = doer;
public int DoThis(int value) => _doer(value);
}
我的生成器如下:
public class Builder
{
private IBar _bar;
public Builder WithBar(Func<int, int> doer)
{
_doer = new AnonymousBar(doer);
return this;
}
public Build() => new Foo(_bar);
}
使用我的生成器,我可以做到:
Foo myFoo = new Builder().WithBar(i => 7).Build();
是否可以修改AnonymousBar
以便执行以下操作:
Foo myFoo = new FooBuilder().WithBar(foo => foo.MyProp % 12).Build();
其中foo
是myFoo
,以便myFoo.Bar.DoThis()
使用myFoo.MyProp
吗?
忽略实现逻辑。我知道这是荒谬的。这只是一个例子。