将特定类型作为泛型传递给函数重载

时间:2017-02-16 09:24:28

标签: c# generics

我试图弄清楚如何根据在方法上作为参数传递的泛型类型来获取重载方法。

以下代码将解释我想要实现的目标。

public class GetUser{
    public User Execute<T>(int userId) where T : User { return null; }

    public UserModel Execute<T>(int userId) where T : Business { return null; }
}

(new GetUser()).Execute<User>(1);
(new GetUser()).Execute<UserModel>(2);

该方法的问题,因为它仍然传递相同的参数 visual studio仍然显示已经定义了Execute方法。

如果我这样做

 public User Execute<T>(this User obj, int userId) where T : User { return null; }

视觉工作室仍然要求传递第一个参数。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

不可能

重载方法必须依赖于方法参数,而不仅仅是返回类型或泛型参数。