Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json Delphi XE7:如何正确地从类+;接口对?(XSuperObject:ISuperArray+;TSuperArray)_Json_Class_Delphi_Interface_Xsuperobject - Fatal编程技术网

Json Delphi XE7:如何正确地从类+;接口对?(XSuperObject:ISuperArray+;TSuperArray)

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

我需要向XSuperObject库中的TObjectArray类添加一些功能。我可以直接将它添加到XSuperObject.pas的源代码中,但我不应该这样做。相反,我想从ISuperArray/TSuperArray对派生我自己的interface+类。但是怎么做呢?我知道如何独立派生类,但当涉及接口时,我以前从未这样做过

XSuperObject.pas对这些类的定义如下:

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;