c# - 延迟实例化的传递参数

标签 c# parameter-passing lazy-initialization

给定以下代码片段,我如何传递成员变量 _tenantContext进入Lazy<CloudBlobContainer>构造函数?

public class BlobStorage : IStorage
{
    private readonly ITenantContext _tenantContext;

    public BlobStorage(ITenantContext tenantContext)
    {
        _tenantContext = tenantContext;
    }

    private readonly Lazy<CloudBlobContainer> _blobcontainer = new Lazy<CloudBlobContainer>(() =>
    {
        var connectionString = ConfigurationManager.ConnectionStrings["FileStorage"].ConnectionString;
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer blobContainer = blobClient.GetContainerReference("attachments");
        blobContainer.CreateIfNotExists();

        return blobContainer;
    });

最佳答案

我相信这会奏效:

public class Foo
{
    private readonly object _bar;
    private readonly Lazy<int> _lazyInt; 

    public Foo(object bar)
    {
        _bar = bar;
        _lazyInt = new Lazy<int>(() => GetLazyObject(_bar));
    }

    private static int GetLazyObject(object init)
    {
        return init.GetHashCode();
    }
}

关于c# - 延迟实例化的传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35924720/

相关文章:

python - 将 R、B、G 数组列表转换为颜色名称

c++ - 线程安全类的有序静态初始化

hibernate - 在 JSF 中使用 JPA 实体。防止 LazyInitializationException 的最佳策略是什么?

c# - 是否可以在更新面板之外引用链接机器人作为更新触发器?

c# - 如何编写一个函数来读取 XElement.Value 并将其转换为 C# 中的指定类型?

python - Python中函数参数的模式匹配

hibernate - 未能延迟初始化角色 : com. pojo.Student.phonenos 的集合,没有 session 或 session 已关闭

C# 无法在自定义验证属性中找到其他属性

c# - 如何使用 mono.cecil 添加没有默认构造函数的自定义属性

flutter - Flutter 将数据从父 StatefulWidget 传递给子 StatefulWidget