Tôi có một lớp chung Delphi cho thấy một hàm với một đối số của kiểu generic. Bên trong hàm này, tôi cần phải chuyển một thể hiện của kiểu generic vào một đối tượng khác đang chờ kiểu biến thể. Tương tự như vậy:Làm thế nào tôi có thể chuyển đổi từ chung sang biến thể trong 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;
Tôi đã thử sử dụng Rtti.TValue.From (SomeValue) .AsVariant. Điều này làm việc cho các loại tích phân, nhưng đã làm nổ tung Booleans. Tôi không thấy lý do tại sao, vì thông thường tôi có thể gán một giá trị Boolean cho một Biến thể ...
Có cách nào tốt hơn để thực hiện chuyển đổi này không? Tôi chỉ cần nó để làm việc cho các kiểu tích hợp đơn giản (không bao gồm liệt kê và ghi)
Các bạn đã cố gắng tạo ra một biến địa phương của loại 'Biến thể', gán' SomeValue' cho nó, và sau đó chuyển biến cục bộ sang 'FMyIntf.DoStuff()'? –
Có. Tôi không thể làm điều đó vì không có dàn diễn viên hợp lệ từ 'T' đến 'Biến thể' ... –