<?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>.NET Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/14/ShowForum.aspx</link><description>Θέματα για threading, remoting, reflection, exception handling, security, regex κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Εύρεση πεδίων μιας κλάσης από static μέθοδο.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/42027.aspx</link><pubDate>Fri, 16 May 2008 00:23:25 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:42027</guid><dc:creator>anjelinio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/42027.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=42027</wfw:commentRss><description>... θα συμφωνήσω κι εγώ με τη Νατάσσα. Αν μια static μέθοδος χρειάζεται να ξέρει ποιός είναι ο caller της, και να πράττει ανάλογα ... κάτι βρωμάει εδώ. &lt;br&gt;&lt;br&gt;&lt;br&gt;Υ.Γ. Κι επειδή ο άνθρωπος ο οποίος ξεκίνησε το thread δε φαίνεται να έχει πεί κάτι εδώ και καιρό, νομίζω ότι ματαιοπονούμε σε αυτό το thread πια, ε;&amp;nbsp; :D&lt;br&gt;</description></item><item><title>Απ: Εύρεση πεδίων μιας κλάσης από static μέθοδο.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/42025.aspx</link><pubDate>Thu, 15 May 2008 23:41:54 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:42025</guid><dc:creator>Νατάσα Μανουσοπούλου</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/42025.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=42025</wfw:commentRss><description>&lt;P&gt;Ας μη βρει τον caller. Ας κάνει τη μέθοδο instance και να λύσει το πρόβλημά του με ένα φτηνό και ταπεινό this.GetType().&lt;/P&gt;</description></item><item><title>Απ: Εύρεση πεδίων μιας κλάσης από static μέθοδο.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/42024.aspx</link><pubDate>Thu, 15 May 2008 22:53:56 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:42024</guid><dc:creator>M1ke</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/42024.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=42024</wfw:commentRss><description>Μάλλον θα ακουστεί άσχημο και κακό και παλιομοδίτικο, αλλά ένα enum των κλάσεων δεν αρκεί?&lt;br&gt;&lt;br&gt;int classtype στην "a" και μεταβολή αυτής στον constructor των inhereted.&lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: Εύρεση πεδίων μιας κλάσης από static μέθοδο.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/42023.aspx</link><pubDate>Thu, 15 May 2008 22:49:52 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:42023</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/42023.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=42023</wfw:commentRss><description>&lt;P&gt;Και αμέσως μετά μου ήρθε, άλλος ένας "περίεργος" τρόπος,&amp;nbsp;για να κάνεις αυτό που κάνει το CSLA στην PropertyHasChanged.&amp;nbsp;Η PropertyHasChanged έχει δύο εκδόσεις, μία η οποία δέχεται σαν παράμετρο το όνομα του property και μία με το StackTrace που κάνει όλη αυτή τη μανούβρα για να βρει το όνομα του property μέσω της StackTrace και να καλέσει μετά την πρώτη εκδοχή. Βέβαια, πάλι θα πρέπει κανείς να πάει σε όλα τα property set και να γράψει PropertyHasChanged(), οπότε το μόνο που κερδίζει κανείς είναι ότι μπορεί να κάνει copy/paste αυτή τη γραμμή.&lt;/P&gt;
&lt;P&gt;Κάτι παρόμοιο μπορεί να πετύχει κανείς με την MethodBase.GetCurrentMethod().Name η οποία επιστρέφει το όνομα της τρέχουσας μεθόδου. Έτσι η PropertyHasChanged γίνεται PropertyHasChanged(MethodBase.GetCurrentMethod().Name) . Πετυχαίνει το ίδιο αποτέλεσμα με καλύτερες (όχι όμως καλές) επιδόσεις και παίζει και το copy/paste.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Υ.Γ. Ο κώδικας της PropertyHasChanged είναι ...&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;[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]&lt;BR&gt;[Obsolete(&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:#666666;FONT-FAMILY:Courier New;BACKGROUND-COLOR:#e4e4e4;"&gt;"Use overload requiring explicit property name"&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;protected&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;void&lt;/SPAN&gt; PropertyHasChanged()&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&lt;/SPAN&gt; propertyName &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; System.Diagnostics.StackTrace().GetFrame(1).GetMethod().Name.Substring(4);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PropertyHasChanged(propertyName);&lt;BR&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;οπότε μάλλον το καταλάβανε ότι η ιδέα ήταν κακή.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Εύρεση πεδίων μιας κλάσης από static μέθοδο.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/42021.aspx</link><pubDate>Thu, 15 May 2008 22:38:29 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:42021</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/42021.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=42021</wfw:commentRss><description>&lt;P&gt;Και πως το χρησιμοποιεί μάλιστα ... επειδή βαριέται να περάσει το όνομα του Property! Έχει και άλλα τέτοια "καλούδια" το CSLA. Αυτό πάντως είναι ένα παράδειγμα περίπτωσης όπου ΔΕΝ πρέπει να χρησιμοποιείς το StackTrace αλλά να βρεις άλλη λύση! &lt;/P&gt;
&lt;P&gt;Όσον αφορά το αρχικό ερώτημα. Ο άνθρωπος ρώτησε πως να βρει τον caller. Αυτό γίνεται με την StackTrace. Με άλλο τρόπο γίνεται?&lt;/P&gt;</description></item><item><title>Απ: Εύρεση πεδίων μιας κλάσης από static μέθοδο.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/42016.aspx</link><pubDate>Thu, 15 May 2008 20:55:48 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:42016</guid><dc:creator>PALLADIN</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/42016.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=42016</wfw:commentRss><description>&lt;FONT size=2&gt;
&lt;P&gt;Εάν η ερώτηση σου είναι γενική, μπορώ να απαντήσω σύμφωνα με την δικη μου περίπτωση... Το StackTrace το πρωτοσυνάντησα όταν μελετούσα το source code του CSLA (δες PropertyHasChanged())... το ακολούθησα και εγώ στο δικό μου framework... αλλα γρήγορα το εγκατέλειψα...(ενοχλητικό performace... και inlining issues)&lt;/P&gt;&lt;/FONT&gt;</description></item><item><title>Απ: Εύρεση πεδίων μιας κλάσης από static μέθοδο.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/42014.aspx</link><pubDate>Thu, 15 May 2008 20:30:16 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:42014</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/42014.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=42014</wfw:commentRss><description>Να ρωτήσω και το άλλο, πού χρειάζεται να ξέρει κανείς ποιός καλεί μία μέθοδο? Το σενάριο έχει μεγάλη σημασία για το πως θα βρει κανείς τον caller αλλά και για το αν χρειάζεται καν να τον βρει.</description></item><item><title>Απ: Εύρεση πεδίων μιας κλάσης από static μέθοδο.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/42010.aspx</link><pubDate>Thu, 15 May 2008 19:19:30 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:42010</guid><dc:creator>plasmatek</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/42010.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=42010</wfw:commentRss><description>&lt;P&gt;εμ, θα μπορούσες να προσθέσεις μια επιπλέον παραμέτρο στην StaticMethod, με την οποία θα περνάς το Type του object που την καλεί.&lt;/P&gt;
&lt;P&gt;πχ. b.StaticMethod(typeof(b))&lt;/P&gt;
&lt;P&gt;δεν μου φαίνεται όμορφο/κομψό αλλά μάλλον είναι αρκετά efficient.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Εύρεση πεδίων μιας κλάσης από static μέθοδο.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/42006.aspx</link><pubDate>Thu, 15 May 2008 18:33:12 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:42006</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/42006.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=42006</wfw:commentRss><description>&lt;P&gt;Παιδιά, πως θα βρει κανείς τον caller μίας μεθόδου με την GetType ?&lt;/P&gt;</description></item><item><title>Απ: Εύρεση πεδίων μιας κλάσης από static μέθοδο.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/42005.aspx</link><pubDate>Thu, 15 May 2008 18:27:26 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:42005</guid><dc:creator>PALLADIN</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/42005.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=42005</wfw:commentRss><description>Θα συμφωνήσω με την Νατάσα...και να τονίσω ότι έχει και απίστευτα &lt;FONT size=1&gt;&lt;FONT size=2&gt;κακό&lt;/FONT&gt; &lt;/FONT&gt;performance (Με έχει "δαγκώσει" μια φορα)&lt;BR&gt;</description></item><item><title>Απ: Εύρεση πεδίων μιας κλάσης από static μέθοδο.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41999.aspx</link><pubDate>Thu, 15 May 2008 17:08:42 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41999</guid><dc:creator>Νατάσα Μανουσοπούλου</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41999.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=41999</wfw:commentRss><description>&lt;P&gt;Αν δε σε εμποδίζει κάτι πραγματικά σοβαρό&amp;nbsp;να κάνεις τη μέθοδό σου instance από static, κάνε το. Έτσι θα αποφύγεις το stack walk που έχει αυξημένα security permission demands.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Εύρεση πεδίων μιας κλάσης από static μέθοδο.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41988.aspx</link><pubDate>Wed, 14 May 2008 21:24:14 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41988</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41988.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=41988</wfw:commentRss><description>&lt;P&gt;Αυτό που ζητάς δεν έχει σχέση με το Reflection. Το Reflection σου λέει ποιά members έχει μία κλάση διαβάζοντας τα metadata που υπάρχουν σε ένα DLL. Αυτό που ζητάς εσύ έχει να κάνει με το πως εκτελείται ο κώδικας της εφαρμογής και συγκεκριμένα, με το call stack της κάθε κλήσης. Αυτό το functionality κατά κανόνα θα το βρεις στο System.Diagnostic.&lt;/P&gt;
&lt;P&gt;Τον caller μίας μεθόδου μπορείς να τον βρεις χρησιμοποιώντας τις κλάσεις System.Diagnostic.StackTrace και System.Diagnostic.StackFrame. Το documentation της StackTrace έχει παραδείγματα για το πως μπορείς να βρεις από ποιές μεθόδους έχει περάσει μία κλήση μέχρι να φτάσει στη μέθοδο σου. Με την StackTrace.GetFrame(1) παίρνεις πληροφορίες για αυτόν που κάλεσε απευθείας τη μέθοδο σου. &lt;/P&gt;
&lt;P&gt;Δες και το &lt;A href="http://www.dotnetjunkies.com/WebLog/mames/archive/2004/08/03/21091.aspx"&gt;Exploring the Call Stack Programmatically&lt;/A&gt; που περιγράφει την ίδια διαδικασία&lt;/P&gt;</description></item><item><title>Εύρεση πεδίων μιας κλάσης από static μέθοδο.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/41985.aspx</link><pubDate>Wed, 14 May 2008 20:53:34 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:41985</guid><dc:creator>alfoks</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/41985.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=41985</wfw:commentRss><description>Hello!&lt;br&gt;&lt;br&gt;Έχω μια κλάση έστω a&lt;br&gt;&lt;br&gt;public class a {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int nField;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static string StaticMethod() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;}&lt;br&gt;&lt;br&gt;και κλάσεις (b, c) που κάνουν inherit από αυτήν με επιπλέον πεδία η κάθε μια.&lt;br&gt;&lt;br&gt;Κάποια στιγμή καλώ b.StaticMethod() ή c.StaticMethod(). Σε αυτό το σημείο μέσα στην StaticMethod θέλω να βρώ τον τύπο της κλάσης&lt;br&gt;που έκανε την κλήση, ώστε να πάρω με Reflection τα πεδία της. Αν η StaticMethod δεν ήταν static θα μπορούσα να πω απλά GetType().&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item></channel></rss>