将对象分配给Lazarus中的接口

时间:2017-03-31 10:25:49

标签: lazarus

我正在Lazarus中编写一个应用程序,在那里我使用接口进行MVVM设计。

我有一个IModel和IViewModel接口

IViewModel = interface
  function GetModel: IModel;
  procedure SetModel(AValue: IModel);
  property Model: IModel read GetModel write SetModel;
end; 

IModel = interface
end;

我也有模型的实现

IMainModel = interface(IModel)
   ...
end;

TMainModel = TMainModel = class(TInterfacedObject, IMainModel)
   ...
end;

和viewmodels

IMainViewModel = interface(IViewModel)
  ...
end;

TMainViewModel = class(TInterfacedObject, IMainViewModel)
private
  FModel: IModel;
  procedure SetModel(AValue: IModel);
  function GetModel: IModel;
  ...
public
  property Model: IModel read GetModel write SetModel; 
  ...
end;

当我尝试将实现分配给viewmodel

var LModel: TMainModel;
    LMainViewModel: TMainViewModel
begin
LMainViewModel.Model := LModel;
LMainView.ViewModel := LMainViewMode;
end;

我收到一条消息:

VKCommunityMessenger.lpr(34,33)错误:arg no的类型不兼容。 1:得到“TMainModel”,预计“IModel”

我做错了什么?

P.S。应用的完整源代码是here。最新提交包含此错误。

0 个答案:

没有答案