Thema: Prism Klasse kopieren

Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Klasse kopieren

  Alt 16. Apr 2006, 19:13
Um einen Clone anzufertigen würde ich den Standardweg gehen und IClonable implementieren:
Delphi-Quellcode:
type
   SomeClass = class(ICloneable)
   protected
      function UntypedClone : Object; implements ICloneable.Clone;
   public
      property SomeValue : String
         read fSomeValue write fSomeValue ;
      function Clone : SomeClass; virtual;
   private
      fSomeValue: String;
   end;

implementation

function SomeClass.UntypedClone : Object;
begin
   result := Clone();
end;

function SomeClass.Clone : SomeClass;
begin
   result := MemberwiseClone() as SomeClass;
end;
Ich verwende aber einen andere Pascal Dialekt für .Net, sollte aber ähnlich genug sein um das Prinzip zu erkennen.

Bei D.Net musst du allerdings noch schauen, wie da Delphi-Referenz durchsuchenInteface resolution clauses benutzt werden. Implements gibt es ja nicht mehr bzw. gab es in der Form auch nicht in Delphi32...

Wichtig ist definitv MSDN-Library durchsuchenMemberwiseClone, egal ob du nun das Interface imlementierst oder nicht.

Hier noch ein Test:
Delphi-Quellcode:
var instance1 := new SomeClass(SomeValue := 'Hallo');
var instance2 := instance1.Clone();

instance1.SomeValue := 'Abc';

Console.WriteLine(instance1.SomeValue);
Console.WriteLine(instance2.SomeValue);
Output
Abc
Hallo
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat