1

特定のタイプのオブジェクトの関数を呼び出す必要がありますが、呼び出す関数を呼び出し元に指定してもらいたいです。

C++では、このようにメンバーへのポインターを使用できます

class C 
{
    void F(void (A::*F)(int));
}

C#に相当するものはありますか?

関数の配列やスイッチのようなトリックはありません。関数の署名が要件を満たしている間に新しい関数が追加された場合でも、このソリューションが機能することを望みます。

編集:私が読んだように:デリゲートはC++関数ポインターに似ていますが、タイプセーフです。

しかし、メンバー関数ポインターが必要です。たとえば、私の関数では、特定のオブジェクトを取得します。

var properties = manager.GetProperties();

特定のタイプのプロパティを取得する必要があります。

var type1 = properties.GetType1();

しかし、私はこのようなものが必要です

var typeX = properties.GetTypeX();

この関数呼び出しに対してユーザーが要求した型を取得します。どの TypeX でなければなりませんか?

Type1..N には共通の基本クラスがあり、このクラスを使用する必要があります。

4

2 に答える 2

3

はい、デリゲートと呼ばれます

2 つの標準的なものがありますFunc<T>Action<T>

于 2013-10-29T08:14:23.503 に答える