Sergei Gorelkin schreef:
Graeme Geldenhuys wrote:
Beats me, I thought that might be needed for querying a object for
interfaces it supports... As far as CORBA is concerned, I'm just
shooting in the dark here... Information on CORBA usage is limited
and I can't find any FPC code examples to give me hints. It seems
quite useless having the Corba support in FPC, if everything related
to Interfaces requires COM methods.
Think of Corba-styled interfaces as about "interfaces without COM glue",
not just as about "interfaces without refcounting". To get runtime
typecasting features, you have to implement it yourself. OTOH, you are
free to implement anything you want.
As for non-refcounted interfaced base class, you may want to use
TComponent. Of course, it has some overhead compared with
TInterfacedObject, but its features are quite useful in almost every
application.
Given:
type
TAddCommand = class(TBaseCommnad, ICommand)
<bla>
end;
Does the compiler store somewhere that that TAddCommand implements ICommand? I
assume it does the compile time check that TAddCommand implements all ICommands
methods, but is there something similar provided by the compiler (or RTTI) which can
be used to do something like
ACommnd := TAddCommand.Create;
if (ACommand is TBaseCommand) then
writeln('This works');
if (ACommand.InheritsFrom('TBaseCommand') then
writeln('This works');
if (ACommand is ICommand) then
writeln('I don't know if this works, but I would expect it if you consider
interfaces similar to abstract base classes');
if (ACommand.Implements(ICommand)) then
writeln('I don't know if this works, but it is similar to the InheritsFrom
case');
Vincent
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel