PJD*_*JDW 3 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;
});
Run Code Online (Sandbox Code Playgroud)
我相信这会起作用:
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();
}
}
Run Code Online (Sandbox Code Playgroud)