我将尝试使用类型化接口和Spring4D,但在解析方面遇到了一些问题。请查看以下详细信息。
数据库对象:
但我希望以下内容可以正常工作 :) -
请建议如何正确解决这个问题?(保留HTML标签)
数据库对象:
unit u_DB;
type
TDBObject = class
public
property ID: TGUID;
end;
TDBCRM = class(TDBObject)
public
property SOME_FIELD: TSomeType;
end;
声明:
unit i_BaseDAL;
type
{$M+}
IBaseDAL<T: TDBObject, constructor> = interface
['{56D48844-BD7F-4FF8-A4AE-30DA1A82AD67}']
procedure RefreshData();
....
end;
unit u_BaseDAL;
type
TBaseDAL<T: TDBObject, constructor> = class(TInterfacedObject, IBaseDAL<TDBObject>)
public
procedure RefreshData();
....
end;
之后,我能够注册基本的IBaseDAL和IBaseDAL。
GlobalContainer.RegisterType<IBaseDAL<TDBObject>>;
GlobalContainer.RegisterType<IBaseDAL<TDBCRM>>;
在项目中使用:
我需要解决现在的IBaseDAL问题,但找不到如何解决。只有下面这种丑陋的方法可行。
DM := GlobalContainer.Resolve('i_BaseDAL.IBaseDAL<u_DB.TDBObject>@TBaseDAL<u_DBCRM.TDBCRM>').AsInterface as IBaseDAL<TDBObject>;
但我希望以下内容可以正常工作 :) -
DM := GlobalContainer.Resolve(IBaseDAL<TDBCRM>);
请建议如何正确解决这个问题?(保留HTML标签)
[dcc32 Error] fr_CRM.pas(231): E2250 没有重载版本的'Resolve'可以使用这些参数调用
。 - SpanishBoy<
>
而不是(
)
)。 - Stefan Glienke<
>
我得到了[dcc32 Error] frm_CRM.pas(32): E2010 Incompatible types: "i_BaseDAL.IBaseDAL<u_DB.TDBObject>" and "i_BaseDAL.IBaseDAL<u_DB.TDBCRM>"
的错误。 - YoungMaster