String 如何从实例类获取属性名
我需要从对象类中获取属性名作为字符串。在德尔福有可能吗 我需要将属性传输作为方法的参数,并将属性名称作为字符串获取。我不想使用属性名作为参数,因为在类中更改属性名时,编译器不会捕获错误String 如何从实例类获取属性名,string,class,delphi,properties,get,String,Class,Delphi,Properties,Get,我需要从对象类中获取属性名作为字符串。在德尔福有可能吗 我需要将属性传输作为方法的参数,并将属性名称作为字符串获取。我不想使用属性名作为参数,因为在类中更改属性名时,编译器不会捕获错误 type TMyClass = class private fField: some_type; public property Field:some_type read fField; end; function GetPropertyName(arg: ??):string
type
TMyClass = class
private
fField: some_type;
public
property Field:some_type read fField;
end;
function GetPropertyName(arg: ??):string
begin
Result := arg.PropertyName; // here I need get property name form transfer type
end;
var
obj: TMyClass;
name: string;
begin
name := GetPropertyName(obj.Field);
end;
为了澄清,正如评论中所讨论的,我正在寻找一个与C#函数直接等价的函数 从您的评论中可以清楚地看出,您正在寻找与C#函数等效的Delphi
Delphi中不存在这样的等价物,而且该语言也没有让您自己创建它的工具。相反,您需要在代码中将该方法命名为字符串文字 对不起,这个问题我一点也不懂。您希望写入
name
的值是多少?您的属性字段的名称是字段。如果您搜索其他内容,请更好地描述您的问题。对不起,我需要以字符串形式获取属性名称。方法GetPropertyName(obj.Field)必须返回字符串'Field',而不是fFieldDude的值,您所要求的是不可能的。如果需要名称,则需要传递名称。您可以使用RTTI来读取属性值。我建议使用RTTI来迭代所有可用的字段、方法和属性。然后,您可以看到所有方法、属性和字段的名称,以及字段和属性的所有元信息(数据类型、可见性),以及属性的访问可能性(r/w/default/stored),等等。首先,请检查此选项: