Mam klasę generyczną Delphi, która udostępnia funkcję z argumentem typu ogólnego. Wewnątrz tej funkcji, muszę przekazać instancję typu ogólnego do innego obiektu oczekującego typu Wariant. Podobny do tego:Jak mogę przekonwertować z generic na Variant w Delphi
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;
Próbowałem za pomocą Rtti.TValue.From (SomeValue) .AsVariant. To działało dla typów integralnych, ale wybuchło dla Booleans. Nie do końca rozumiem, dlaczego, ponieważ normalnie mógłbym przypisać wartość logiczną do wariantu ...
Czy istnieje lepszy sposób na dokonanie tej konwersji? Potrzebuję go tylko do pracy z prostymi wbudowanymi typami (z wyłączeniem wyliczeń i rekordów).
Czy próbowałeś tworząc lokalną zmienną typu 'Variant', przypisz' SomeValue' do niego, a następnie przekaż lokalną zmienną do 'FMyIntf.DoStuff()'? –
Tak. Nie mogę tego zrobić, ponieważ nie ma ważnej obsady od "T" do "Wariantu" ... –