如何实现返回类型为Task <t> </t>的方法

时间:2014-04-11 10:57:08

标签: c# .net asp.net-mvc generics asp.net-identity

我正在尝试为新身份系统开发数据库第一种方法,而且我目前正在努力。这就是我到目前为止所拥有的

    public class MyCustomUserStore<T>: IUserStore<T> where T:ApplicationUser
    {

         public System.Threading.Tasks.Task<T> FindByIdAsync(string userId)
        {
            Task<ApplicationUser> taskInvoke = Task<ApplicationUser>.Factory.StartNew(() =>
            {
                //Here is where I will lookup my existing legacy database table
                //setting some dummy value here to the properties added tothe ApplicationUser class
                ApplicationUser obj = new ApplicationUser();
                obj.Id = "userid : " + userId;
                return  obj;
            });

            return  taskInvoke;

        }
     }

我得到的错误是

Cannot implicitly convert type 'System.Threading.Tasks.Task<MyProject.Models.ApplicationUser>' 
    to 'System.Threading.Tasks.Task<T>'

问题1.)我的班级是否正确定义?如果是,我该如何进一步获取从此方法返回的值?

问题2.)我是否应该为实现这个类的方法而烦恼?如果我只是扩展了UserManager类并覆盖了它的所有方法,那就不会更好

   public class MyCustomUserManager : UserManager<ApplicationUser>
   {
   }

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效

public System.Threading.Tasks.Task<T> FindByIdAsync(string userId)
        {
                var obj = new T();
                obj.Id = "userid : " + userId;
                return Task.FromResult(T);
        }