我已经在一些代码中看到了这一点:

class BlahService: ResolverThingy
{
    private IBlahData blahData => this.ResolveDependency<IBlahData>();

    BlahService(Func<IBlahData> blahDataFactory)()
    {
    }
}


它试图做什么?我习惯于这样布置我的代码:

class BlahService: ResolverThingy
{
    private IBlahData insightData;

    BlahService(IBlahData blahDataFactory)()
    {
        this.insightData = blahDataFactory
    }
}


是否要延迟IBlahData类型的内存声明?

最佳答案

它只是将委托传递给构造函数以在运行时解析IBlahData的类型(实现)。

class BlahService: ResolverThingy
{
    private Func<IBlahData> blahData => ResolveDependency<IBlahData>();

    public BlahService(Func<IBlahData> blahDataFactory)
    {
       this.blahData = blahDataFactory;
    }

    // usage
    public void SomeMethod()
    {
        var blahDataImpl = this.blahData();
        // now you can use blahDataImpl
    }
}

10-02 04:13