我有我在async
方法中设置接收器的模型,然后如果电子邮件是 XI 类型,则需要从其他两个对象生成 URL。然而model.Url
,当接收者被分配时不会被分配。我应该如何修复它才能同时适用于两者?
private async Task GenerateUrl(Model model)
{
var urlModel = GetUrlByOrganizationId(model.OrgId);
var org = GetOrg(model.Id);
model.Url = brand.Domain + org.Name;
await Task.FromResult(model.Url);
}
private async Task<Email> GenerateEmail(User receiver, Guid brandId)
{
var model = new Model()
{
title = "",
Organization = organization,
Url = string.Empty
};
try
{
await model.SetReceiverAsync(receiver, 0, model.Locale, model.Dialect);
await this.GenerateUrl(model);
}
catch (Exception exc)
{
this.Log(LogLevels.Warning, exc.Message);
return null;
}
// Send email
var email = Sender.RenderModel(template, model);
return email;
}
我想用model.Url
的var email = Sender.RenderModel(template, model);
线
目前还不清楚为什么GenerateUrl
被定义为async
方法并返回一个Task
. 如果它只是设置Url
模型的属性,它应该像这样定义:
private void GenerateUrl(Model model)
{
var urlModel = GetUrlByOrganizationId(model.OrgId);
var org = GetOrg(model.Id);
model.Url = brand.Domain + org.Name;
}
并没有调用await
:
this.GenerateUrl(model);
如果您打算从该方法返回 URL,则返回类型应该是string
or Task<string>
(尽管鉴于当前的实现,后者没有多大意义):
private async Task<string> GenerateUrl(Model model)
{
var urlModel = GetUrlByOrganizationId(model.OrgId);
var org = GetOrg(model.Id);
model.Url = brand.Domain + org.Name;
return Task.FromResult(model.Url);
}
private async string GenerateUrl(Model model)
{
var urlModel = GetUrlByOrganizationId(model.OrgId);
var org = GetOrg(model.Id);
model.Url = brand.Domain + org.Name;
return model.Url;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句