Dynamic Interface (or Strong "Duck Typing")
[id:soutaro:20050921:1127300721]経由で知りました。
http://msdn.microsoft.com/vbasic/future/default.aspx?pull=/library/en-us/dnvs05/html/vb9overview.asp#vb9overview_topic12
VB9から使えるようになるようですよ。
-
-
- -
-
ダウンキャストのことを考えなければ、静的な言語でも、動的なインターフェースを下のように真似できるのですが、ダウンキャストがあるとこういうことはできないので、動的なメソッド探索を行えないと真似はできないんだろうな。
type TAnObject = class function CalcSomething(x: Integer): Integer; procedure DoSomething; function ToString: string; end; TAnInterface = class CalcSomething: function (x: Integer): Integer of object; DoSomething: procedure of object; end; ... var obj : TAnObject; intf: TAnInterface; ... intf.CalcSomething = obj.CalcSomething; intf.DoSomething = obj.DoSomething; AnProcedureThatNeedsInterface(intf); ...