File tree Expand file tree Collapse file tree 3 files changed +10
-4
lines changed
src/CreationalPatterns/Prototype/PrototypeLibrary/WebPageScraperExample Expand file tree Collapse file tree 3 files changed +10
-4
lines changed Original file line number Diff line number Diff line change 1+ namespace PrototypeLibrary . WebPageScraperExample ;
2+
3+ public interface ICustomCloneable
4+ {
5+ WebPageScraper Clone ( ) ;
6+ }
Original file line number Diff line number Diff line change 11namespace PrototypeLibrary . WebPageScraperExample ;
22
33#pragma warning disable IDE0060 // Remove unused parameter
4- public class WebPageScraper : ICloneable
4+ public class WebPageScraper : ICustomCloneable
55{
66 private string _title = string . Empty ;
77 private int _numberOfHeaders ;
@@ -20,10 +20,10 @@ public void PrintPageContent() =>
2020 $ "Number of headers: { _numberOfHeaders } , " +
2121 $ "Number of pictures: { _numberOfPictures } ") ;
2222
23- public object Clone ( ) =>
23+ public WebPageScraper Clone ( ) =>
2424 // If we have complex data type MemberwiseClone call wouldn't be enough.
2525 // MemberwiseClone creates a shallow copy of the current object (it goes just one level in the depth).
26- MemberwiseClone ( ) ;
26+ ( MemberwiseClone ( ) as WebPageScraper ) ! ;
2727
2828 private void Scrape ( string page )
2929 {
Original file line number Diff line number Diff line change @@ -17,7 +17,7 @@ public static void Execute()
1717
1818 // After implementing of ICloneable, we can call Clone().
1919 // This is basically prototype pattern.
20- var scraper3 = ( scraper . Clone ( ) as WebPageScraper ) ! ;
20+ var scraper3 = scraper . Clone ( ) ;
2121 scraper3 . PrintPageContent ( ) ;
2222 }
2323}
You can’t perform that action at this time.
0 commit comments