Func <type> factory。我不确定在以下示例中这是做什么的

时间:2015-09-23 09:34:39

标签: c#

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

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类型的内存声明?

1 个答案:

答案 0 :(得分:2)

它只是将委托传递给构造函数,以便在运行时解析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
    }
}