Могу ли я представить базовый интерфейс для производного интерфейса.Могу ли я использовать тип Base для производного интерфейса?
Как мне сделать, как Delphi
Delphi генерируется код/Delphi 7:
function TXMLBook.Get_Id: IXMLId;
begin
Result := ChildNodes['id'] as IXMLId;
end;
ChildNodes [ 'ID'] является базовым типом IXMLNode
IXMLId получают вид из IXMLNode
и мой код примера:
type
IBase = interface(IInterface)
['{5CEA3668-36CB-444C-8D3E-06644070A2B4}']
function Test:AnsiString;
end;
TBase =class(TInterfacedObject,IBase)
function Test:AnsiString;
end;
IDerived =interface (IBase)
['{8CDB2982-43B0-4636-B6F5-2561C0D419A9}']
function Test2: AnsiString;
end;
TDerived=class (TBase,IDerived)
function Test:AnsiString;
function Test2:AnsiString;
end;
{ TBase }
function TBase.Test: AnsiString;
begin
Result:='Base Test';
end;
{ TDerived }
function TDerived.Test: AnsiString;
begin
Result:='Derived Test';
end;
function TDerived.Test2: AnsiString;
begin
Result:='Derived Test2';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
b:IBase;
d: IDerived;
begin
b:=TBase.Create;
d:=b as IDerived; // Error : Interface not supported
ShowMessage(b.Test);
end;
Thanks @Lieven. Delphi, как это сделать, вы знаете? Я не знаю, что классы будут выпущены позже. – zgn
@zgn - Я не уверен, что понимаю ваш комментарий. Это вопрос или наблюдение? –
На самом деле, я пытаюсь похож на код Delphi. Что вы можете сказать для самой верхней выборки delphi. – zgn