一連の列挙型を使用して内部の値を開始できる汎用クラスを作成しようとしています。例えば:
constructor TManager<TEnum>.Create;
var
enum: TEnum;
enumObj: TMyObject;
begin
fMyObjectList:= TObjectDictionary<TEnum,TMyObject>.Create([doOwnsValues],10);
for enum:= Low(TEnum) to High(TEnum) do
begin
enumObj:= TMyObject.Create();
fMyObjectList.Add(enum, enumObj);
end;
end;
さらに、後のメソッドは、列挙値を介してオブジェクトをフェッチします。次に例を示します。
function TManager<TEnum>.Fetch(enum: TEnum): TMyObject;
begin
fMyObjectList.TryGetValue(enum, Result);
end;
ただし、ジェネリック パラメータとして渡すと、デルファイは TEnum が列挙型になることを知りません。何らかの方法でそれを強制することはできますか?