请教 大佬重写 FindByNameAsync

[复制链接]
查看11 | 回复8 | 2021-1-27 07:20:00 | 显示全部楼层 |阅读模式
publicoverrideTaskFindByNameAsync(stringuserName)
{
returnTask.Run(()=>
{
IdentityUsera=newIdentityUser();
a.Id="1";
a.UserName="aaaa";
a.PasswordHash="aaaaaa";
TUsert=default(TUser);
t=(TUser)a;//请边出错。不可强制转换
returnt;
});
}
这里面应怎么写,网上是把TUser换成实体类,我主要想重写这个方法,
分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:20:00 | 显示全部楼层
你的IdentityUser和TUser是什么关系?IdentityUser继承自TUser?
回复

使用道具 举报

千问 | 2021-1-27 07:20:00 | 显示全部楼层
没有任何对应关系,怎么可以强转,要么有继承关系,要么方法再加个转换的委托,比如
publicoverrideTaskFindByNameAsync(stringuserName,Func[I]func)
{
if(func==null)thrownewArgumentNullException("null");
returnTask.Run(()=>
{
IdentityUsera=newIdentityUser();
a.Id="1";
a.UserName="aaaa";
a.PasswordHash="aaaaaa";
TUsert=func(a);
returnt;
});
}
回复

使用道具 举报

千问 | 2021-1-27 07:20:00 | 显示全部楼层
TUser是泛型,约束IdentityUser。
回复

使用道具 举报

千问 | 2021-1-27 07:20:00 | 显示全部楼层

publicTaskFindByNameAsync(stringuserName)
{
return_customeRepository.Table.FirstOrDefaultAsync(c=>c.UserName==userName);
}

直接使用直接实现IUserStore,这样就能使用自己的实体来创建了
回复

使用道具 举报

千问 | 2021-1-27 07:20:00 | 显示全部楼层
publicoverrideTaskFindByNameAsync(stringuserName)
whereTUser:IdentityUser,new()
{
returnTask.Run(()=>
{
TUsera=newTUser();
a.Id="1";
a.UserName="aaaa";
a.PasswordHash="aaaaaa";
returna;
});
}
回复

使用道具 举报

千问 | 2021-1-27 07:20:00 | 显示全部楼层
然后你这个方法task没任何意义,反而浪费性能
回复

使用道具 举报

千问 | 2021-1-27 07:20:00 | 显示全部楼层

publicclassMyUserStore:UserStorewhereTUser:IdentityUser
{
publicMyUserStore()
{}
//
//摘要:
//Constructorthattakesthedbcontext
publicMyUserStore(DbContextcontext){}
publicoverrideTaskFindByNameAsync(stringuserName)
{
returnTask.Run(()=>
{
TUsert=default(TUser);//用new也不行
t.PasswordHash="tttttt";//运行时这里提示System.NullReferenceException:“未将对象引用设置到对象的实例。”
t.UserName="tt";
returnt;

//returnt;
});
}
}

回复

使用道具 举报

千问 | 2021-1-27 07:20:00 | 显示全部楼层
未将对象引用设置到对象的实例。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行