在这段代码中:
TTest<IntfT: IInterface> = class
protected
fObj : TInterfacedObject;
public
function GetVal: IntfT;
end;
如果我希望将 fObj 作为 IntfT 返回,我将如何实现 GetVal 函数?
我试过了:
result := fObj as IntfT;
和
fObj.QueryInterface(IntfT,result);
和
result := fObj as IInterface;
但似乎没有任何效果。这似乎是一件很简单的事情,我一直在想我一定是错过了什么。
有任何想法吗?
编辑
现在对我来说最有希望的是 QueryInterface。目前编译器抱怨 IntfT 不是 GUID,我的印象是,如果我有适当的 GUID,一切都会很高兴。任何人都知道在这种情况下可以从接口类型中获取 IID 的方法吗?