我正在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。最新提交包含此错误。