2009-08-10 10 views
0

Gibt es eine Mini C# -Konsolenanwendung, um Reflection zu verfolgen? Playing around Reflection

+1

Was meinst du, verfolgen? Reflection kann in jeder Art von Anwendung verwendet werden. –

+0

Ich meine, ich möchte vertieftes Wissen über Reflexion in C# erwerben. Ich möchte eine Anwendung wie "Reflektor" entwickeln. – user146584

+0

@Rengaseshan: Nichts für ungut aber Reflektor ist bereits geschrieben, und es ist Experte Territorium, etwas wie es zu schreiben. –

Antwort

1
+0

Schön. Vor einem halben Jahr ging ich durch einen Link, der ein Spiel basierend auf Reflektion ist, sehr nützlich, um zu lernen, wie die Technik funktioniert. Aber die Verbindung ist gebrochen. – user146584

1

IronPython für mit .NET Objekte zu spielen. Nicht C#, aber wirklich einfache Reflexion über alle .NET Objekte.

>>> import clr 
>>> import System 
>>> ip=System.Net.IPAddress(System.Array[System.Byte]([10,0,0,1])) 
>>> ip 
<System.Net.IPAddress object at 0x0000000000000034 [10.0.0.1]> 
>>> dir(ip) 
['Address', 'AddressFamily', 'Any', 'Broadcast', 'Equals', 'GetAddressBytes', 'G 
etHashCode', 'GetType', 'HostToNetworkOrder', 'IPv6Any', 'IPv6Loopback', 'IPv6No 
ne', 'IsIPv6LinkLocal', 'IsIPv6Multicast', 'IsIPv6SiteLocal', 'IsLoopback', 'Loo 
pback', 'MemberwiseClone', 'NetworkToHostOrder', 'None', 'Parse', 'ReferenceEqua 
ls', 'ScopeId', 'ToString', 'TryParse', '__class__', '__delattr__', '__doc__', ' 
__eq__', '__getattribute__', '__hash__', '__init__', '__ne__', '__new__', '__red 
uce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__'] 
>>> ip.Address 
16777226L 
>>> 
0

Ich stimme zu, dass das Reflektor Dienstprogramm ein wirklich nettes Dienstprogramm Explorer-Assemblys ist.

Wenn Sie Ihre eigene Reflektionsanwendung erstellen möchten, um zu erfahren, wie Metadaten strukturiert sind, würde ich Ihnen empfehlen, Expert .NET 2.0 IL Assembler zu lesen. Es gibt einen schönen Überblick darüber, wie Metadaten heute in Assemblys strukturiert sind.

Das .NET-Framework stellt bereits Entwicklern Reflektionswerkzeuge zur Verfügung, wie vom Benutzer "weiqure" angegeben, und ich würde empfehlen, dass Sie den System.Reflection-Namespace ausprobieren, um auch mit der Reflexion zu beginnen.

+0

Vielen Dank Mike – user146584

+0

Es ist mir ein Vergnügen. Ich hoffe diese Information hilft dir! :) –