我可以在每个后代类上声明一个字段为static而不是为所有后代类共享它的值吗?
这是一个基类:
type
TKpModelViewControllerEntity = class(TInterfacedObject, IKpEntity)
protected
class var ResourceName: string;
procedure Manage;
public
class function Create: IKpEntity;
end;
字符串
这是一个后代
unit Customers;
type
TCustomers = class(TKpModelViewControllerEntity)
end;
initialization
TCustomers.ResourceName := 'customers/';
型
还有一个:
unit Articles;
type
TArticles = class(TKpModelViewControllerEntity)
end;
initialization
TArticles.ResourceName := 'articles/';
型
当我尝试创建一个Customers屏幕(TCustomers.Create.Manage
)时,它的Resourcename的值是“articles/”而不是“customers/"。
有没有一种方法可以指示静态字段为每个子类保存单独的值?.
- 谢谢-谢谢
3条答案
按热度按时间2g32fytz1#
这可以通过以下属性轻松实现:
字符串
gojuced72#
我会使用
class virtual
方法而不是class var
,例如:epggiuax3#
类字段/方法是静态字段,不存储在类示例数据中,所以它引用继承链中的第一个。
一个好的实践应该是:
1.定义一个接口,例如
IResource
,它声明了一个方法function GetResourceName: String
。1.在
TCustomers
和TArticles
上实现该接口。1.通过上述方法查询资源名称。