22. 12月 2016 16:12
/
丘山大一
/
Blog . プログラミング . Delphi
コメント (0)
Delphi で、「インターフェースで受け取った変数が、他のインターフェースを実装しているか」
をどのように調べるのかが分からなくて苦戦したのでメモ。
調べる前 「isでいけるいける」
コードを書いた後 「isだとコンパイル通らないやん……」
というわけで、正解はこんな感じ。
ソースは、ブラック企業から社員を取得し、その人物がプログラマーならなら残業させるというもの。
procedure hoge;
var
IShain : ISalaryman;
IShachiku :IProgramer;
begin
IShain := BlackCompany.Shain;
if Supports(IShain, IProgramer, IShachiku) then
IShachiku.Zangyou;
end;
BlackCompany.Shainから返された値を、ISalaryman インターフェースで宣言されたIShainで受けとります。
このIShain変数の実体が、IProgramer インターフェースを実装しているかどうか調べるのがSupports メソッドです。
実装していないならFalse、実装されているならTrue が返り、第三引数(サンプルではIShachiku)にIProgramer にキャストされたものが入ってきます。
これでIShachiku 変数には、IProgramer 型が入ってきます。
後は残業させればよいヨロシ。
詳細は
下記の本に書いてあります(宣伝)
Tags :