Assign方法必须自己写,比如在Delphi的代码中,就有如下
procedure TFieldDef.Assign(Source: TPersistent);
var
I: Integer;
S: TFieldDef;
begin
if Source is TFieldDef then
begin
if Collection <> nil then Collection.BeginUpdate;
try
S := TFieldDef(Source);
{FieldNo is defaulted}
Name := S.Name;
DataType := S.DataType;
Size := S.Size;
Precision := S.Precision;
Attributes := S.Attributes;
InternalCalcField := TFieldDef(Source).InternalCalcField;
if HasChildDefs then ChildDefs.Clear;
if S.HasChildDefs then
for I := 0 to S.ChildDefs.Count - 1 do
with AddChild do Assign(S.ChildDefs[I]);
finally
if Collection <> nil then Collection.EndUpdate;
end;
end else inherited;
end;此外,没有什么其他方法。
procedure TFieldDef.Assign(Source: TPersistent);
var
I: Integer;
S: TFieldDef;
begin
if Source is TFieldDef then
begin
if Collection <> nil then Collection.BeginUpdate;
try
S := TFieldDef(Source);
{FieldNo is defaulted}
Name := S.Name;
DataType := S.DataType;
Size := S.Size;
Precision := S.Precision;
Attributes := S.Attributes;
InternalCalcField := TFieldDef(Source).InternalCalcField;
if HasChildDefs then ChildDefs.Clear;
if S.HasChildDefs then
for I := 0 to S.ChildDefs.Count - 1 do
with AddChild do Assign(S.ChildDefs[I]);
finally
if Collection <> nil then Collection.EndUpdate;
end;
end else inherited;
end;此外,没有什么其他方法。
你只有一个属性一个属性地赋值,没有更好的方法,
因为对象的内部结构很复杂,有很多指针,并不是连续的
一片区域.