如果可以的话可以俱体给一个小例子吗? DELPHI的反射我搜索了一下没找到 。可能是关键词没用对
这样子定义一个水果接口苹果类从水果接口派生梨子类从水果接口派生然后怎么反射这个苹果类,和梨子类??

解决方案 »

  1.   

    ifruit = interface
      function: who_am_i: string;
    end;Tfruit = class(ifruit)
      function: who_am_i: string;
    end;function Tfruit.who_ami: string;
    begin
      Result := 'I am ' + Copy(ClassName, Length('TFruit') + 1, MaxInt);
    end;TFruitClass = class of TFruit;TFruitApple = class(TFruit) end;
    FFruitOrange = class(TFruit) end;
    TFruitPeach = class(TFruit) end;var
      production_list: TStringList;production_list.AddObject('apple', TObject(TFruitApple));
    production_list.AddObject('orange', TObject(TFruitOrange));
    production_list.AddObject('peach', TObject(TFruitPeach));function produce(const FruitName: string): IFruit;
    var
      index: integer;
      fruit: TFruitClass;
    begin
      index := production_list.indexof(FruitName);
      if index >= 0 then
      begin
        fruit := TFruitClass(production_list.Objects[index]);
        Result := fruit.Create;
      end
      else Result := nil;
    end;
      

  2.   

    去搜一下《Thinking in Delphi:语言的变革》这篇文章
    ==============================
    从Delphi 7开始,Borland就已经将Object Pascal称为Delphi Language。但是Delphi 7中的语言与以前版本相比并没有根本性的改变,这一改变实际上是发生在Delphi 8中的。因此,在本文中,将Delphi 8中使用的语言称为Delphi Language,以前版本的Delphi中使用的语言则称为Object Pascal。....................Object Pacsal通过内置RTTI可以支持对不确定对象的属性和方法的检索,这也是Delphi组件机制的基础之一。但是Object Pacsal不支持动态生成类,因此只能说部分支持Reflection。