ジェネリック型の引数を持つ関数を公開するDelphiジェネリッククラスがあります。この関数の中で、汎用型のインスタンスをVariant型を予期している別のオブジェクトに渡す必要があります。これと同様:デルファイでジェネリックからバリアントに変換するには
type
IMyInterface = interface
DoStuff(Value: Variant);
end;
TMyClass<T> = class
FMyIntf: IMyInterface
procedure DoStuff(SomeValue: T);
end;
[...]
procedure MyClass<T>.DoStuff(SomeValue: T);
begin
FMyIntf.DoStuff((*convert SomeValue to Variant here*));
end;
私はRtti.TValue.From(SomeValue).AsVariantを使ってみました。これは整数型では機能しましたが、ブーリアンでは爆発しました。私は、通常、なぜ私はバリアントにブール値を割り当てることができるだろうと思う理由はよく分かりません...
この変換を行う良い方法はありますか?
:
可能な使用法:私はあなたが後でそれらを必要とすることができる場合の列挙を処理します'Variant'、' SomeValue'を代入し、ローカル変数を 'FMyIntf.DoStuff()'に渡しますか? –
はい。 'T'から 'Variant'への有効なキャストがないので、私はそれを行うことができません... –