2017-02-16 8 views
1

メソッドのパラメータとして渡されるジェネリック型に基づいてオーバーロードされたメソッドを取得する方法を理解しようとしています。特定の型を関数オーバーロードの汎用として渡す

以下のコードは、私が達成したいことを説明します。そのアプローチで

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

を行うとVisual Studioがまだ合格する最初のパラメータを求めます。

アイデア?

+0

コードに何が問題なのかを記述してください。 –

+4

汎用型制約はメソッドシグネチャの一部ではありません。 –

+4

返品の種類だけが異なる過負荷を設定することはできません。 –

答えて

2

です。

オーバーロードされたメソッドは、戻り値の型またはジェネリックパラメータだけでなく、メソッドのパラメータに依存する必要があります。

関連する問題