C# 初始化值使用什么模式
我有一项服务,可与外部资源Microsoft Graph一起使用:C# 初始化值使用什么模式,c#,design-patterns,microsoft-graph-api,C#,Design Patterns,Microsoft Graph Api,我有一项服务,可与外部资源Microsoft Graph一起使用: public class Office365DomainService : IOffice365DomainService { private GraphServiceClient _graphClient; public async Task AddDomainAsync(string domain) { await _graphClient.Domains.Request().Add
public class Office365DomainService : IOffice365DomainService
{
private GraphServiceClient _graphClient;
public async Task AddDomainAsync(string domain)
{
await _graphClient.Domains.Request().AddAsync(new Microsoft.Graph.Domain { Id = domain });
}
public async Task<string> GetMxRecordForDomainAsync(string domain)
{
var collection = await _graphClient.Domains[domain].ServiceConfigurationRecords.Request().GetAsync();
return String.Empty;
}
public async Task<string> GetVerificationRecordForDomainAsync(string domain)
{
var records = (await _graphClient.Domains[domain].VerificationDnsRecords.Request().GetAsync());
string verificationText = String.Empty;
foreach (var record in records)
{
if (record.RecordType == "Txt")
{
verificationText = ((Microsoft.Graph.DomainDnsTxtRecord)record).Text;
break;
}
}
return verificationText;
}
public async Task VerifyDomainAsync(string domain)
{
await _graphClient.Domains[domain].Verify().Request().PostAsync();
}
}
如果我们记得在调用任何方法之前设置AccessToken,它就可以正常工作。但是如果我们忘了做呢?最好的方法是,如果这个_graphClient不是init,则通过另一个服务调用getting access_token。如何小心操作?为什么不使用惰性初始化?
请看一下文档Hello Oleg,我不知道这是否适用于您,但之前当我想在我的DI上懒洋洋地加载一些东西时,我会在我的DI上使用工厂或懒洋洋的类型,比如懒洋洋,即使它是通过构造函数注入注入注入的,它也会被初始化,直到我需要它为止。谢谢
public string AccessToken { set => _graphClient = (new GraphSdkHelper()).GetAuthenticatedClient(value); }