我有一个包含不同类型值的字典,我想过滤具有特定子类型且满足特定条件的项目:
var
FData: IDictionary<TGUID, TObject>; // Polymorphic
begin
TMicroStep(FData.Values.Single(
function(const O: TObject): Boolean begin
Result := (O is TMicroStep) and (TMicroStep(O).OrderTag = 1);
end))
end;
它可以工作,但由于类型检查和双重转换,它看起来很难看。
也许这样的事情是可能的?
var
FData: IDictionary<TGUID, TObject>; // Polymorphic
begin
FData.Values.SingleSubType<TMicroStep>(
function(const MS: TMicroStep): Boolean begin
Result := MS.OrderTag = 1;
end))
end;
Spring有什么可以帮助我的吗?