<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>WinForms</title><link>https://www.dotnetzone.gr:443/cs/forums/12/ShowForum.aspx</link><description>Θέματα για rich client / windows εφαρμογές, σε οποιαδήποτε γλώσσα (VB.NET, C#, managed C++, κ.α.)</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Πρόβλημα κατά την προσθήκη derived-class objects σε generic collection(of BaseClass)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/38905.aspx</link><pubDate>Tue, 08 Jan 2008 18:37:10 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:38905</guid><dc:creator>Sunburn</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/38905.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=38905</wfw:commentRss><description>'Εχεις δίκιο. 'Ηταν δική μου γκάφα στο αρχικό implementation. Πολλές ευχαριστίες.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: Πρόβλημα κατά την προσθήκη derived-class objects σε generic collection(of BaseClass)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/38881.aspx</link><pubDate>Tue, 08 Jan 2008 01:47:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:38881</guid><dc:creator>Nassos.NET</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/38881.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=38881</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Sunburn:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;* Αν ορίσω π.χ. το property "Navigator" στην class "Aircraft" να δέχεται και να επιστρέφει αντικείμενο τύπου Aircraft_Navigator (που έιναι το επιθυμητό), καθως και να κάνει override το αντίστοιχο property "Navigator" της class "ActiveUnit" (το οποίο επιστρέφει αντικείμενο ActiveUnit_Navigator), o compiler γκρινάζει οτι δεν μπορεί να δεχτει το override γιατι τα δυο properties επιστρέφουν διαφορετικά Object types.&lt;BR&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;ΟΧΙ&amp;nbsp; στην Class Aircraft το property θα δέχετε και θα επιστρέφει ActiveUnit_Navigator μέσα στο Get/Set του Property θα εσύ θα κάνει return το Aircraft_Navigator του class σου ο compiler δεν θα χτυπήσει γιατί η Aircraft_Navigator είναι τύπου ActiveUnit_Navigator!!!!&lt;/P&gt;
&lt;P&gt;τό ίδιο σε όλες τις Classes που κληρονομούν από το ActiveUnit_Navigator θα κάνεις το ίδιο!! Ο Compiler ξέρει το Underline Τype του ActiveUnit_Navigator (Aircraft_Navigator,κτλ) και θα τρέξει το σωστό implementation.&lt;/P&gt;
&lt;P&gt;[EDIT]: Μπορείς να κάνεις Cast πχ&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Aircraft craft1 &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;new&lt;/SPAN&gt; Aircraft ();&lt;BR&gt;Aircraft_Navigator craftNav &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; (Aircraft_Navigator)craft.Navigator ;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;sory for the C#&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Hope that helped&lt;/P&gt;
&lt;P&gt;Nassos&lt;/P&gt;</description></item><item><title>Απ: Πρόβλημα κατά την προσθήκη derived-class objects σε generic collection(of BaseClass)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/38877.aspx</link><pubDate>Tue, 08 Jan 2008 01:29:12 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:38877</guid><dc:creator>Sunburn</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/38877.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=38877</wfw:commentRss><description>Δυστυχώς φάινεται πως το πρόβλημα παραμένει, σε διαφορετική μορφή.&lt;br&gt;&lt;br&gt;Ακολουθώντας την ανωτέρω συμβουλή, μετέτρεψα τα complex type πεδία (Navigator, AI, Kinematics κλπ.) σε Get/Set properties, τόσο στην baseclass ActiveUnit όσο και σε όλες τις derived classes. Ωστόσο, τώρα παρουσιάζεται το εξής Catch-22:&lt;br&gt;&lt;br&gt;* Αν ορίσω π.χ. το property "Navigator" στην class "Aircraft" να δέχεται και να επιστρέφει αντικείμενο τύπου Aircraft_Navigator (που έιναι το επιθυμητό), καθως και να κάνει override το αντίστοιχο property "Navigator" της class "ActiveUnit" (το οποίο επιστρέφει αντικείμενο ActiveUnit_Navigator), o compiler γκρινάζει οτι δεν μπορεί να δεχτει το override γιατι τα δυο properties επιστρέφουν διαφορετικά Object types.&lt;br&gt;&lt;br&gt;* Αν, αντί για override, ορίσω το property "Navigator" στην class "Aircraft" να κάνει overload το αντίστοιχο property "Navigator" της class "ActiveUnit" (ωστε να επιστρέφει και να δέχεται Aircraft_Navigator objects), ο compiler το δέχεται. Ωστόσο, στην εκτέλεση του προγράμματος και την προσπέλαση του loop "For each theUnit as ActiveUnit in UnitCollection....", o κώδικας εκτελεί την εντολή PlotCourse _στο ActiveUnit_Navigator_ παρολο που υπάρχει αντίστοιχη μέθοδος στο Aircraft_Navigator (η οποια φυσικά κανει override την αντίστοιχη του ActiveUnit_Navigator). Υποθέτω πως αυτό γίνεται επειδή στο loop enumeration δηλώνω το αντικείμενο ως "ActiveUnit" αντί για "Aircraft", οπότε το πρόγραμμα πάει κετευθείαν στην baseclass και αγνοεί οποιοδήποτε overloading υπάρχει στις derived classes.&lt;br&gt;&lt;br&gt;Μπρος γκρεμός και πίσω ρέμα λοιπόν. Ή δηλώνω override (που είναι αυτό που ουσιαστικά θέλω) και ο compiler χτυπάει άκυρο λόγω του type mismatch, ή δηλωνω overload και χάνω την επιθυμητή λειτουργικότητα.&lt;br&gt;&lt;br&gt;Όπως πριν, κάθε πρόταση λύσης ευπρόσδεκτη.&lt;br&gt;</description></item><item><title>Απ: Πρόβλημα κατά την προσθήκη derived-class objects σε generic collection(of BaseClass)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/38849.aspx</link><pubDate>Mon, 07 Jan 2008 20:48:44 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:38849</guid><dc:creator>Sunburn</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/38849.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=38849</wfw:commentRss><description>Πραγματικά αυτή είναι η λύση. Σας ευχαριστώ αμφότερους.&lt;br&gt;</description></item><item><title>Απ: Πρόβλημα κατά την προσθήκη derived-class objects σε generic collection(of BaseClass)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/38844.aspx</link><pubDate>Mon, 07 Jan 2008 20:05:24 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:38844</guid><dc:creator>Nassos.NET</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/38844.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=38844</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Sunburn:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;FONT face=Tahoma color=#000000 size=2&gt;Σε όλα τα παραδείγματα που έχω δει για την χρήση του "Property", το μέλος που γίνεται Get/Set είναι simple type π.χ. string, integer κλπ. Στην περίπτωσή μου, το ActiveUnit_Navigator κ.ο.κ. είναι full-fledged class με δικά του properties, functions etc. (Αρχικά ήταν όλα μαζί στο class ActiveUnit αλλά τα μετακίνησα σε ξεχωριστά classes γιατι λόγω μεγέθους η συντήρηση είχε αρχίσει να γίνεται δύσκολη).&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;FONT face=Tahoma color=#000000 size=2&gt;Πώς γίνεται το Get/Set του Property να διαχειριστεί ένα complex type;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;"οπως και για primitives:&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;Public&lt;/FONT&gt; override &lt;FONT color=#0000ff&gt;Property&lt;/FONT&gt; &lt;FONT face="Courier New"&gt;Navigator&lt;/FONT&gt;() &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;ActiveUnit_Navigator &lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Get&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Return&lt;/FONT&gt; _&lt;FONT face="Courier New"&gt;Navigator&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Get&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Set&lt;/FONT&gt;(&lt;FONT color=#0000ff&gt;ByVal&lt;/FONT&gt; value &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; ActiveUnit_Navigator )&lt;/P&gt;
&lt;P&gt;_&lt;FONT face="Courier New"&gt;Navigator&lt;/FONT&gt;= value&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Set&lt;/P&gt;
&lt;P&gt;End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#000000&gt;Και στο return μπορείς να κάνεις &lt;FONT face="Courier New"&gt;Navigator().MethodOrProperty Call&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT face="Courier New" color=#000000&gt;Hope that helped&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT face="Courier New" color=#000000&gt;Nassos&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT face="Courier New" color=#000000&gt;PS. Επιδή ειμαι C# Developer και οι γνώσεις μου στην VB ειναι terrible! μπορει το "override" να μην δουλεψει ετσι όπως το συνταξα.&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;</description></item><item><title>Απ: Πρόβλημα κατά την προσθήκη derived-class objects σε generic collection(of BaseClass)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/38843.aspx</link><pubDate>Mon, 07 Jan 2008 19:49:27 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:38843</guid><dc:creator>Sunburn</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/38843.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=38843</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Νατάσα Μανουσοπούλου:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Υπάρχουν διάφορα θέματα με την υλοποίησή σου. Κατ' αρχήν, έχεις ορίσει τα μέλη της κλάσης&amp;nbsp;σου σαν public πεδία και όχι properties, κάτι που σε περιορίζει πάρα πολύ, και ιδιαίτερα στο ότι δεν μπορείς με αυτό τον τρόπο να ορίσεις πολυμορφική συμπεριφορά στα object σου. Έτσι καταλήγεις να χρησιμοποιείς το Shadows, που δεν είναι και πολύ καλή πρακτική.&lt;/p&gt;
&lt;p&gt;Θα ήταν προτιμότερο η base class σου να είναι κάπως έτσι:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:normal;font-size:11px;color:black;font-family:Courier New;background-color:transparent;"&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Public&lt;/span&gt; &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Class&lt;/span&gt; ActiveUnit&lt;br&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Inherits&lt;/span&gt; Unit&lt;br&gt;&lt;br&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Public&lt;/span&gt; &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Overridable&lt;/span&gt; &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Property&lt;/span&gt; Navigator() &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;As&lt;/span&gt; ActiveUnit_Navigator&lt;br&gt;...&lt;br&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;End&lt;/span&gt; &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Property&lt;/span&gt;&lt;br&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Public&lt;/span&gt; &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Overridable&lt;/span&gt; &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Property&lt;/span&gt; AI() &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;As&lt;/span&gt; ActiveUnit_AI&lt;br&gt;...&lt;br&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;End&lt;/span&gt; &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Property&lt;/span&gt;&lt;br&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Public&lt;/span&gt; &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Overridable&lt;/span&gt; &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Property&lt;/span&gt; Kinematics() &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;As&lt;/span&gt; ActiveUnit_Kinematics&lt;br&gt;...&lt;br&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;End&lt;/span&gt; &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Property&lt;/span&gt;&lt;br&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Public&lt;/span&gt; &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Overridable&lt;/span&gt; &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Property&lt;/span&gt; Sensory() &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;As&lt;/span&gt; ActiveUnit_Sensory&lt;br&gt;...&lt;br&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;End&lt;/span&gt; &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Property&lt;/span&gt;&lt;br&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;End&lt;/span&gt; &lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:normal;font-size:11px;color:black;font-family:Courier New;background-color:transparent;"&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;&lt;font color="#000000" face="Tahoma" size="2"&gt;και να κάνεις override τα properties στις derived κλάσεις ώστε να επιστρέφουν αντικείμενο του σωστού τύπου (π.χ. Aircraft_Navigator).&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;&lt;span style="font-weight:normal;font-size:11px;color:black;font-family:Courier New;background-color:transparent;"&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:normal;font-size:11px;color:black;font-family:Courier New;background-color:transparent;"&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;&lt;font color="#000000" face="Tahoma" size="2"&gt;Σε όλα τα παραδείγματα που έχω δει για την χρήση του "Property", το μέλος που γίνεται Get/Set είναι simple type π.χ. string, integer κλπ. Στην περίπτωσή μου, το ActiveUnit_Navigator κ.ο.κ. είναι full-fledged class με δικά του properties, functions etc. (Αρχικά ήταν όλα μαζί στο class ActiveUnit αλλά τα μετακίνησα σε ξεχωριστά classes γιατι λόγω μεγέθους η συντήρηση είχε αρχίσει να γίνεται δύσκολη).&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:normal;font-size:11px;color:black;font-family:Courier New;background-color:transparent;"&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;&lt;font color="#000000" face="Tahoma" size="2"&gt;Πώς γίνεται το Get/Set του Property να διαχειριστεί ένα complex type;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Νατάσα Μανουσοπούλου:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight:normal;font-size:11px;color:black;font-family:Courier New;background-color:transparent;"&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;&lt;font color="#000000" face="Tahoma" size="2"&gt;Αντίστοιχα η ActiveUnit_Navigator θα έχει μια Overridable Sub PlotCourse() την οποία η Aircraft_Navigator θα κάνει override με τη σωστή υλοποίηση κλπ.&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight:normal;font-size:11px;color:black;font-family:Courier New;background-color:transparent;"&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;&lt;font color="#000000" face="Tahoma" size="2"&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-weight:normal;font-size:11px;color:black;font-family:Courier New;background-color:transparent;"&gt;&lt;span style="font-weight:normal;font-size:11px;color:blue;font-family:Courier New;background-color:transparent;"&gt;&lt;font color="#000000" face="Tahoma" size="2"&gt;Αυτό ακριβώς έχω κάνει. Ο λόγος που κάθε ActiveUnit-derived class έχει δικά της Navigator, AI, Kinematics κλπ. (τα οποία με τη σειρά τους ειναι&amp;nbsp; derived από το ActiveUnit_Navigator etc.) είναι ώστε κάθε αντικείμενο να μπορεί να κάνει override τις default (ActiveUnit) μεθόδους με τις δικές του όποτε χρειαστεί.&lt;br&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Απ: Πρόβλημα κατά την προσθήκη derived-class objects σε generic collection(of BaseClass)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/38841.aspx</link><pubDate>Mon, 07 Jan 2008 19:24:22 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:38841</guid><dc:creator>Sunburn</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/38841.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=38841</wfw:commentRss><description>'Εκανα ενα δευτερο τεστ: Ξανα, δημιούργησα ενα aircraft object και το πρόσθεσα στην UnitCollection, που είναι Collection(of ActiveUnit).&lt;br&gt;&lt;br&gt;For each theUnit As ActiveUnit in UnitCollection.....&lt;br&gt;&lt;br&gt;Return Ctype(theUnit, Aircraft).Navigator =&amp;gt; Aircraft_Navigator object (σωστά, όπως πρέπει).&lt;br&gt;&lt;br&gt;Return theUnit.Navigator =&amp;gt; Nothing&lt;br&gt;&lt;br&gt;Όταν λοιπόν γίνεται explicit casting στον τύπο Aircraft, μας επιστρέφει το aircraft_navigator object που θέλουμε. Το θέμα ειναι, πώς θα γίνει να επιστρέφει το επιθημητό object ΧΩΡΙΣ να χρειαστεί να γίνει explicit cast (αφου όταν κάνουμε enumeration στο UnitCollection δεν μπορούμε να ξέρουμε εκ των προτέρων αν το κάθε&amp;nbsp; αντικείμενο έιναι&amp;nbsp; aircraft ή ship ή οτιδήποτε άλλο, ξέρουμε μόνο ότι είναι σίγουρα ActiveUnit).&lt;br&gt;&amp;nbsp;&lt;br&gt;</description></item><item><title>Απ: Πρόβλημα κατά την προσθήκη derived-class objects σε generic collection(of BaseClass)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/38840.aspx</link><pubDate>Mon, 07 Jan 2008 19:17:52 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:38840</guid><dc:creator>Νατάσα Μανουσοπούλου</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/38840.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=38840</wfw:commentRss><description>&lt;P&gt;Υπάρχουν διάφορα θέματα με την υλοποίησή σου. Κατ' αρχήν, έχεις ορίσει τα μέλη της κλάσης&amp;nbsp;σου σαν public πεδία και όχι properties, κάτι που σε περιορίζει πάρα πολύ, και ιδιαίτερα στο ότι δεν μπορείς με αυτό τον τρόπο να ορίσεις πολυμορφική συμπεριφορά στα object σου. Έτσι καταλήγεις να χρησιμοποιείς το Shadows, που δεν είναι και πολύ καλή πρακτική.&lt;/P&gt;
&lt;P&gt;Θα ήταν προτιμότερο η base class σου να είναι κάπως έτσι:&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Public&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Class&lt;/SPAN&gt; ActiveUnit&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Inherits&lt;/SPAN&gt; Unit&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Public&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Overridable&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Property&lt;/SPAN&gt; Navigator() &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;As&lt;/SPAN&gt; ActiveUnit_Navigator&lt;BR&gt;...&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;End&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Property&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Public&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Overridable&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Property&lt;/SPAN&gt; AI() &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;As&lt;/SPAN&gt; ActiveUnit_AI&lt;BR&gt;...&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;End&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Property&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Public&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Overridable&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Property&lt;/SPAN&gt; Kinematics() &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;As&lt;/SPAN&gt; ActiveUnit_Kinematics&lt;BR&gt;...&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;End&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Property&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Public&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Overridable&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Property&lt;/SPAN&gt; Sensory() &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;As&lt;/SPAN&gt; ActiveUnit_Sensory&lt;BR&gt;...&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;End&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Property&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;End&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Class&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;FONT face=Tahoma color=#000000 size=2&gt;και να κάνεις override τα properties στις derived κλάσεις ώστε να επιστρέφουν αντικείμενο του σωστού τύπου (π.χ. Aircraft_Navigator).&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;FONT face=Tahoma color=#000000 size=2&gt;Αντίστοιχα η ActiveUnit_Navigator θα έχει μια Overridable Sub PlotCourse() την οποία η Aircraft_Navigator θα κάνει override με τη σωστή υλοποίηση κλπ.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;FONT face=Tahoma color=#000000 size=2&gt;Και μια τελευταία παρατήρηση: τα underscores σε ονόματα κλάσεων είναι bad practice, αν περάσεις το project σου από τον FxCop θα διαμαρτυρηθεί.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;</description></item><item><title>Πρόβλημα κατά την προσθήκη derived-class objects σε generic collection(of BaseClass)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/38838.aspx</link><pubDate>Mon, 07 Jan 2008 18:34:27 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:38838</guid><dc:creator>Sunburn</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/38838.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=38838</wfw:commentRss><description>Ενα ελαφρώς ακανθώδες πρόβλημα...&lt;br&gt;&lt;br&gt;Έχω την baseclass: &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Class&lt;/span&gt; ActiveUnit&lt;br&gt;    &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Inherits&lt;/span&gt; Unit&lt;br&gt;   &lt;br&gt;  &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Public&lt;/span&gt; Navigator &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; ActiveUnit_Navigator&lt;br&gt;  &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Public&lt;/span&gt; AI &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; ActiveUnit_AI&lt;br&gt;  &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Public&lt;/span&gt; Kinematics &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; ActiveUnit_Kinematics&lt;br&gt;  &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Public&lt;/span&gt; Sensory &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; ActiveUnit_Sensory&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;end&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;class&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Από αυτήν κατάγεται η derived class Platform:&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Class&lt;/span&gt; Platform&lt;br&gt;&lt;br&gt;    &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Inherits&lt;/span&gt; ActiveUnit&lt;br&gt;&lt;br&gt;    &lt;span style="color:Green;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'...some other properties here&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;end&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;class&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Και επίσης διάφορες derived classes από αυτήν, πχ:&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Class&lt;/span&gt; Aircraft&lt;br&gt;    &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Inherits&lt;/span&gt; Platform&lt;br&gt;&lt;br&gt;    &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Shadows&lt;/span&gt; Navigator &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Aircraft_Navigator&lt;br&gt;    &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Shadows&lt;/span&gt; AI &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Aircraft_AI&lt;br&gt;    &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Shadows&lt;/span&gt; Kinematics &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Aircraft_Kinematics&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;end&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;class&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Class&lt;/span&gt; Ship&lt;br&gt;&lt;br&gt;    &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Inherits&lt;/span&gt; Platform&lt;br&gt;&lt;br&gt;    &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Shadows&lt;/span&gt; Navigator &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Ship_Navigator&lt;br&gt;    &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Shadows&lt;/span&gt; AI &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Ship_AI&lt;br&gt;    &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Shadows&lt;/span&gt; Kinematics &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;As&lt;/span&gt; Ship_Kinematics&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;end&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;class&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;και ούτω καθεξής. (Το Aircraft_Navigator και το Ship_Navigator κληρονομούν το ActiveUnit_Navigator, και αντίστοιχα ομοίως για το ΑΙ &amp;amp; Kinematics).&lt;br&gt;&lt;br&gt;Ο λόγος που χρησιμοποιώ Shadows είναι οτι πρόκειται να δημιουργήσω μια σειρά από aircraft και ship objects και να τα τοποθετήσω&amp;nbsp; σε μια collection(of ActiveUnit). Ετσι ωστε μετά, όταν θέλω κάθε αντικείμενο να κάνει τις δικές του ενέργειες, να καλώ π.χ:&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;For&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;each&lt;/span&gt; theUnit &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;as&lt;/span&gt; ActiveUnit &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;in&lt;/span&gt; UnitCollection&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; theUnit.Navigator.PlotCourse&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;next&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;...και κάθε object να χρησιμοποιεί τον δικό του Navigator αντί αυτού της ActiveUnit.&lt;br&gt;&lt;br&gt;Δημιουργώ λοιπόν ένα καινούργιο object, ας πούμε ένα aircraft, και όλα τα properties του δημιουργούνται κανονικά. Το προσθέτω στο UnitCollection..... και ακριβώς πάνω στην ένταξή του όλα τα properties Navigator, AI &amp;amp; Kinematics μηδενίζονται! (γίνονται Nothing). ('Αλλα&amp;nbsp; properties που είναι strings, integers&amp;nbsp; κλπ.&amp;nbsp; παραμένουν αναλλοίωτα). &lt;br&gt;&lt;br&gt;_Υποθέτω_ πως αυτό γίνεται επειδή το UnitCollection περιμένει να του προστεθούν αντικέιμενα ActiveUnit, των οποίων το Navigator να είναι τύπου ActiveUnit_Navigator κ.ο.κ. και όταν βλέπει οτι του έρχεται αντικείμενο που είναι μεν derived από ActiveUnit αλλά τα complex properties του δεν έιναι ActiveUnit_Navigator κλπ., τα απορρίπτει ως "ξένα".&lt;br&gt;&lt;br&gt;Αυτό όμως δεν είναι λιγο κουφο; Αφου τα complex properties του κάθε αντικειμένου (δηλ. τα Navigator, AI &amp;amp; Kinematics) ειναι derived απο τα complex properties του baseclass (ActiveUnit), δεν θα έπρεπε το UnitCollection&amp;nbsp; να τα δεχτεί αδιαμαρτήρητα; Ποιά η χρησιμότητα των generic collections αν δεν μπορούμε να προσθέσουμε σε αυτές derived objects με derived complex properties;&lt;br&gt;&lt;br&gt;Κάθε ιδέα προς επίλυση αυτού το προβλήματος καλοδεχούμενη....&lt;br&gt;</description></item></channel></rss>