我正在编写我的第一个blazor应用程序,以获取某些电子邮件数据并根据需要对其进行修改,并且我获得了以下错误OPN编译信息。无法将类型'System.Collections.Generic.List'隐式转换为'DistributionEmail.Data.EmailInfo'
我已经根据发现的工作示例对应用程序进行了建模。我的课是
public class EmailInfoDb
{
[Key]
public int EmailInfoID { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Address{ get; set; }
[Required]
public string Password { get; set; }
}
界面如下
public interface IEmailInfoListService
{
Task<List<EmailInfoDb>> Get();
Task<EmailInfoDb> Get(int id);
Task<EmailInfoDb> Add(EmailInfoDb emailinfo);
Task<EmailInfoDb> Update(EmailInfoDb emailinfo);
}
public class EmailInfoListService : IEmailInfoListService
{
private readonly ApplicationDbContext _context;
public EmailInfoListService(ApplicationDbContext context)
{
_context = context;
}
public async Task<List<EmailInfoDb>> Get()
{
return await _context.Emails.ToListAsync();
}
public async Task<EmailInfoDb> Get(int id)
{
var email = await _context.Emails.FindAsync(id);
return email;
}
public async Task<EmailInfoDb> Add(EmailInfoDb email)
{
_context.Emails.Add(email);
await _context.SaveChangesAsync();
return email;
}
public async Task<EmailInfoDb> Update(EmailInfoDb emailinfo)
{
_context.Entry(emailinfo).State = EntityState.Modified;
await _context.SaveChangesAsync();
return emailinfo;
}
}
最后,在我的剃须刀页面中
private void PrepareForEdit(EmailInfoDb task)
{
customHeader = "Edit Task";
emailObject = task;
}
protected override async Task OnInitializedAsync()
{
emailObject = await EmailService.Get();
}
private async Task RefreshData()
{
emailInfoList = await EmailService.Get();
}
private async void DataChanged()
{
emailInfoList = await EmailService.Get();
StateHasChanged();
}
仅对方法显示错误
protected override async Task OnInitializedAsync()
{
emailObject = await EmailService.Get();
}
[好,您的EmailService.Get
方法仅返回EmailInfo
实例或List<EmailInfo>
实例,但是您正在使用它,就像它返回了两者一样,请看此:
protected override async Task OnInitializedAsync()
{
emailObject = await EmailService.Get();
}
在这里,您将其视为单个EmailInfo
,但在这里(假定基于变量名)您将其视为一个列表:
private async Task RefreshData()
{
emailInfoList = await EmailService.Get();
}
因此,您的OnInitializedAsync
方法应如下所示:
protected override async Task OnInitializedAsync()
{
emailObject = (await EmailService.Get())[0]; // get first EmailInfo instance
}
当然,这是一个非常幼稚的实现,您将需要检查从List<EmailInfo>
获得的EmailService.Get
是不是null还是为空,但是假设这是您唯一使用电子邮件收集的地方一个实例,则应使用此更改进行编译。