C# 隐式类型转换-mvc应用程序

C# 隐式类型转换-mvc应用程序,c#,asp.net-mvc,asynchronous,type-conversion,C#,Asp.net Mvc,Asynchronous,Type Conversion,寻找一些帮助有关类型转换在C夏普请。我正在使用MVC和实体框架核心创建一个应用程序。现在我正在实现标识,但在创建异步方法时出现错误“无法将类型'gymbddy.Data.Entities.RepoUser'隐式转换为'System.Threading.Task.Task'。 我已经读了一些关于类型转换的文章,但我仍然不清楚这个问题。不一定要寻找答案,但可能是关于如何进一步探索这个问题的一些方向。提前感谢 首先,我用几个简单的属性创建了RepoUser类 using Microsoft.AspNe

寻找一些帮助有关类型转换在C夏普请。我正在使用MVC和实体框架核心创建一个应用程序。现在我正在实现标识,但在创建异步方法时出现错误“无法将类型'gymbddy.Data.Entities.RepoUser'隐式转换为'System.Threading.Task.Task'。 我已经读了一些关于类型转换的文章,但我仍然不清楚这个问题。不一定要寻找答案,但可能是关于如何进一步探索这个问题的一些方向。提前感谢

首先,我用几个简单的属性创建了RepoUser类

using Microsoft.AspNetCore.Identity;
namespace GymBuddy.Data.Entities
{
public class RepoUser : IdentityUser
    {
    public string FirstName { get; set; }
    public string SecondName { get; set; }
    }
}
其次,我创建了一个类,该类将来将为数据库种子,但也将检查用户是否存在

using GymBuddy.Data.Entities;
using Microsoft.AspNetCore.Identity;
using System.Threading.Tasks;

namespace GymBuddy.Data
{
public class GymBuddySeeder
{   
    private readonly UserManager<RepoUser> _userManager;
    public GymBuddySeeder(UserManager<RepoUser> userManager)
    {   
        _userManager = userManager;
    }
    public async Task Seed()
    {
        var user = _userManager.FindByEmailAsync("john.smith@hotmail.com");
        if (user == null)
        {
            user = new RepoUser()
使用gymbddy.Data.Entities;
使用Microsoft.AspNetCore.Identity;
使用System.Threading.Tasks;
名称空间:buddy.Data
{
公共级健身中心
{   
私有只读用户管理器_UserManager;
公共GymBuddySeeder(用户管理器用户管理器)
{   
_userManager=userManager;
}
公共异步任务种子()
{
var user=\u userManager.findbyemailsync(“john。smith@hotmail.com");
if(user==null)
{
用户=新用户()
我一输入“RepoUser”(这里的第一行基本上就是)就会弹出上面描述的错误消息

提前感谢。

更改

var user = _userManager.FindByEmailAsync("john.smith@hotmail.com");

findbyemailsync
末尾的
Async
表示它可能返回一个
任务
。当然,不要相信我的话,看看它返回什么

调用该方法将返回任务。等待异步值将返回与任务一起返回的值。

Change

var user = _userManager.FindByEmailAsync("john.smith@hotmail.com");

findbyemailsync
末尾的
Async
表示它可能返回一个
任务
。当然,不要相信我的话,看看它返回什么


调用该方法将返回任务。等待异步值将返回与任务一起返回的值。

假设FindByEmailAsync实际上是一个异步方法,它可能会返回一个任务。这意味着用户是一个任务而不是一个RepoUser。因此,当您尝试设置用户(任务)时对于新的RepoUser,您得到的类型不匹配没有隐式转换。假设FindByEmailAsync实际上是一个异步方法,它可能返回一个任务。这意味着用户是一个任务而不是RepoUser。因此,当您尝试设置用户(任务)时对于new RepoUser,您得到的类型不匹配,没有隐式转换。他有问题的行仍然会有问题。他仍然无法设置user=new RepoUser()。如果
RepoUser
可分配给
findbyemailsync
@Kevin
findbyemailsync
返回的任何类型,则不会有问题。findbyemailsync应该返回身份用户,RepoUser可能就是。findbyemailsync是通用
UserManager
的一部分,并且缺少一些自定义实现伙计们,这两个答案都很有道理,而且都起作用了!他遇到问题的那一行仍然是个问题。他仍然无法设置user=new repoiuser()。如果
RepoUser
可分配给
findbyemailsync
@Kevin
findbyemailsync
返回的任何类型,则不会有问题。findbyemailsync应该返回身份用户,RepoUser可能就是。findbyemailsync是通用
UserManager
的一部分,并且缺少一些自定义实现伙计们,这两个答案都很有道理,而且都奏效了!