Json Delphi XE7:如何正确地从类+;接口对?(XSuperObject:ISuperArray+;TSuperArray)
我需要向XSuperObject库中的TObjectArray类添加一些功能。我可以直接将它添加到XSuperObject.pas的源代码中,但我不应该这样做。相反,我想从ISuperArray/TSuperArray对派生我自己的interface+类。但是怎么做呢?我知道如何独立派生类,但当涉及接口时,我以前从未这样做过 XSuperObject.pas对这些类的定义如下:Json Delphi XE7:如何正确地从类+;接口对?(XSuperObject:ISuperArray+;TSuperArray),json,class,delphi,interface,xsuperobject,Json,Class,Delphi,Interface,Xsuperobject,我需要向XSuperObject库中的TObjectArray类添加一些功能。我可以直接将它添加到XSuperObject.pas的源代码中,但我不应该这样做。相反,我想从ISuperArray/TSuperArray对派生我自己的interface+类。但是怎么做呢?我知道如何独立派生类,但当涉及接口时,我以前从未这样做过 XSuperObject.pas对这些类的定义如下: type ISuperArray = interface(IBaseJSON<IJSONArray, Int
type
ISuperArray = interface(IBaseJSON<IJSONArray, Integer>)
['{41A2D578-CFAB-4924-8F15-0D0227F35412}']
...
end;
TSuperArray = class(TBaseJSON<IJSONArray, Integer>, ISuperArray)
...
end;
或者我应该同时从接口派生吗?也许是这样的
uses
...
xsuperobject;
type
IProductJson = interface(ISuperArray)
end;
TProductJson = class(TSuperArray, IProductJson)
CategoryIndex: integer;
SubcategoryIndex: integer;
constructor Create(JSON: String);
procedure AddCategory(Title: string);
procedure AddSubcategory(Title: string);
end;
所以我的问题是:如何正确地从ISuperArray/TSuperArray派生出自己的类/接口?如果我也必须从接口派生,我是否还需要复制GUID、创建新GUID或删除GUID 第二个问题:XSuperObject.pas定义了两个函数:SO和SA,用于初始化SuperObject resp。超级阵列。 SA函数是否与我的派生接口/类保持兼容?或者在我从它派生之后,它是否与赋值不兼容?
(可能一个typecast可以帮上忙?这两个函数是否与我的派生接口/类保持兼容?不,他们不会。你提出的解决方案不好。您应该做的是陈述您的问题,并请我们帮助您找到解决方案。通过询问您的解决方案,您限制了我们可以为您提供的帮助。我们可以直接回答您的问题,但最终它将毫无意义,因为您将无法使用您提出的解决方案。好吧,那么为什么我的解决方案不好呢?我是否应该派生自己的类来向TSuperArray添加功能?这不好,因为像
SO
和SA
这样的函数不会返回您添加了功能的对象。至于你应该做什么,我们很难说。我们不知道你的动机是什么。你没有提出问题,只有解决办法。这就是所谓的。我的问题是,我不知道从类+接口派生的正确语法。我知道如何单独从一个类中完成这项工作,但如果还有相应的接口,我就不知道了。我可以删除我迄今为止尝试过的两个代码示例。这会改善问题吗?这两个函数是否与我的派生接口/类兼容?不,他们不会。你提出的解决方案不好。您应该做的是陈述您的问题,并请我们帮助您找到解决方案。通过询问您的解决方案,您限制了我们可以为您提供的帮助。我们可以直接回答您的问题,但最终它将毫无意义,因为您将无法使用您提出的解决方案。好吧,那么为什么我的解决方案不好呢?我是否应该派生自己的类来向TSuperArray添加功能?这不好,因为像SO
和SA
这样的函数不会返回您添加了功能的对象。至于你应该做什么,我们很难说。我们不知道你的动机是什么。你没有提出问题,只有解决办法。这就是所谓的。我的问题是,我不知道从类+接口派生的正确语法。我知道如何单独从一个类中完成这项工作,但如果还有相应的接口,我就不知道了。我可以删除我迄今为止尝试过的两个代码示例。这真的会改善问题吗?
uses
...
xsuperobject;
type
IProductJson = interface(ISuperArray)
end;
TProductJson = class(TSuperArray, IProductJson)
CategoryIndex: integer;
SubcategoryIndex: integer;
constructor Create(JSON: String);
procedure AddCategory(Title: string);
procedure AddSubcategory(Title: string);
end;