我如何在c#中编写一个通用函数,它将根据类的类型调用不同的函数

本文关键字:函数 调用 类型 一个 | 更新日期: 2023-09-27 18:25:41

我有以下通用类:

public class SearchModel<T>
{
    public string Name { get; set; }
    public int? UserId { get; set; }
    public List<T> result { get; set; }
}
public class A{
    ..
    ..
}
public class B{
    ..
    ..
}

SearchModel类中的List可以是A/B类型。现在我有了这两个函数调用,它们给了我适当的结果。

public List<A> SearchApplicationsForA(SearchModel<A> model){
}
public List<B> SearchApplicationsForB(SearchModel<B> model){
}

我想知道我是否可以编写一个通用函数,它可以识别T的类型并调用相应的函数。例如

    public List<T> SearchApplications<T>(SearchModel<T> model)
    {
        if (typeof(T) == typeof(A))
        {
            return SearchVerificationsForA(model);
        }
        else if (typeof(T) == typeof(B))
        {
            return SearchApplicationsForB(model);
        }
    }

有可能编写这样的函数吗?

我如何在c#中编写一个通用函数,它将根据类的类型调用不同的函数

你能不能不

public List<A> SearchApplications(SearchModel<A> model) {
    return SearchVerificationsForA(model);
}
public List<B> SearchApplications(SearchModel<B> model) {
    return SearchVerificationsForB(model);
}

甚至不去测试类型?

您应该考虑以下语法:

public List<T> SearchApplications<T>(SearchModel<T> model)
{
    if (model is A)
    {
        return SearchVerificationsForA(model);
    }
    else if (model is B)
    {
        return SearchApplicationsForB(model);
    }
}