C#-将生成器的结果传递给lambda

时间:2018-08-16 16:32:34

标签: c# builder

是否可以在生成器方法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();

其中foomyFoo,以便myFoo.Bar.DoThis()使用myFoo.MyProp吗?

  

忽略实现逻辑。我知道这是荒谬的。这只是一个例子。

0 个答案:

没有答案