2016-05-17 11 views
2

Delphi 10 Seattleを使用すると、ジェネリックインターフェイスを別のジェネリッククラス定義のインターフェイス制約として使用できますか?ジェネリックインターフェイスを別のジェネリッククラス宣言の制約で使用する

私は、このインターフェイスの宣言があります。

IrmOpenAPIConfigurationItemRequest<REQUESTDATA, RESPONSE> = interface(IrmOpenAPIRequest) 
    procedure DoSomething; 
end; 

を私が制約として上記のタイプの一般的なクラスを宣言したいので、私はTBaseConfigItem_Modelの実装でdoSomethingのメソッドを使用することができます。未定義の識別子 'REQUESTDATA'

がどのように私はこれを達成することができます:

TBaseConfigItem_Model<REQUEST: IrmOpenAPIConfigurationItemRequest<REQUESTDATA, RESPONSE>> = class(...); 

これはコンパイルエラーを与えますか?

P.S.一部の実装の詳細は分かりやすくするために省略されています

答えて

1

一般的なインターフェイスを制約として使用できますが、欠落している汎用パラメータを導入する必要があります。コンパイラのエラーメッセージがあなたに伝えていることです。以下のコンパイル:あなたが答えるために、それは実際にコンパイルが、私は今の型の変数を宣言することができるようリクエストパラメータの必要性を壊すん

type 
    TBaseConfigItem_Model<REQUESTDATA; RESPONSE; REQUEST: 
    IrmOpenAPIConfigurationItemRequest<REQUESTDATA, RESPONSE>> = class 
    public 
    procedure DoSomething; 
    end; 
+0

おかげ。 IrmOpenAPIConfigurationItemRequest Bascy

+0

質問にあるものだけを見ることができ、あなたが持っているより大きな画像を持っていないことを覚えておいてください。あなたが聞いた質問に私は答えたと思いますか? –

+0

ああ、ジェネリック制約の構文を訂正してくれてありがとう。私はいつもその問題を忘れています。おそらくそれはあなたがあなたのコメントによって意味したものです。 –

関連する問題