[英]Delphi Spring framework register generic type
Using the Delphi Spring framework, is it possible to register a generic type with the GlobalContainter? 使用Delphi Spring框架,是否可以使用GlobalContainter注册泛型类型? I'm trying to do something like this:
我正在尝试做这样的事情:
TMyBaseType = class
protected
FName: string;
function GetName: string; virtual;
procedure SetName(Value: string); virtual;
public
property Name: string read GetName write SetName;
end;
TMyFirstThing = class(TMyBaseType)
protected
function GetName: string; override;
end;
TMySecondThing = class(TMyBaseType)
protected
procedure SetName(Value: string); override;
end;
TMyGenericType<T: TMyBaseType> = class
public
procedure DoSomethingWithIt(AObject: T);
function GetTheSomethingsName(AObject: T): string;
end;
// I now want to be able to use the ServiceLocator to get me an instance
// such as TMyGenericType<TMyFirstThing> or TMyGenericType<TMySecondThing>
// but I cannot figure out how to register TMyGenericType<>
......
initialization
GlobalContainer.RegisterType<TMyGenericType<>>;
// this line fails with the messages:
// [DCC Error] E2251 Ambiguous overloaded call to 'RegisterType'
// [DCC Error] E2531 Method 'RegisterType' requires explicit type argument(s)
I'm not sure if what I'm trying to do is possible or if there's a better/alternative way to do it? 我不确定我想要做的是否可行,或者是否有更好的/替代的方法来做到这一点? I'm using Delphi 2010 with the latest Spring4D framework.
我正在使用Delphi 2010和最新的Spring4D框架。 (I also have Delphi XE5 but the project itself is still 2010 due to 3rd party libraries).
(我也有Delphi XE5,但由于第三方库,该项目本身仍然是2010年)。 Any ideas or suggestions would be most appreciated.
任何想法或建议将非常感激。
Delphi does not have unbound (or open) generic types (something like TMyGenericType<>
. Delphi没有未绑定(或开放)泛型类型(类似于
TMyGenericType<>
。
In your case you have to register every closed constructed generic type ( TMyGenericType<TMyFirstThing>
, TMyGenericType<TMySecondThing>
, ...) individually. 在您的情况下,您必须
TMyGenericType<TMyFirstThing>
注册每个封闭的构造泛型类型( TMyGenericType<TMyFirstThing>
, TMyGenericType<TMySecondThing>
,...)。
More informations about the differences of generics in C#, C++ and Delphi: http://blogs.teamb.com/craigstuntz/2009/10/01/38465/ 关于C#,C ++和Delphi中泛型差异的更多信息: http : //blogs.teamb.com/craigstuntz/2009/10/01/38465/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.