0

私は次のジェネリッククラスを持っています:

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 型にすることができます。これで、適切な結果が得られるこれら 2 つの関数呼び出しができました。

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);
        }
    }

そのような関数を書くことは可能ですか?

4

2 に答える 2

0

できませんでしたか

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

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

型をテストすることさえ気にしませんか?

于 2014-10-06T19:38:23.070 に答える
0

代わりに、次の構文を検討する必要があります。

public List<T> SearchApplications<T>(SearchModel<T> model)
{
    if (model is A)
    {
        return SearchVerificationsForA(model);
    }
    else if (model is B)
    {
        return SearchApplicationsForB(model);
    }
}
于 2014-10-06T19:39:51.923 に答える