Random Logic l Forum.NET l 20061.NET reflection Forum.NET 3 rd Meeting ● February 15, 2006 By...

13
Random Logic l Forum .NET l 2006 1 .NET reflection Forum .NET 3 rd Meeting ● February 15, 2006 By Damián Laufer

Transcript of Random Logic l Forum.NET l 20061.NET reflection Forum.NET 3 rd Meeting ● February 15, 2006 By...

Page 1: Random Logic l Forum.NET l 20061.NET reflection Forum.NET 3 rd Meeting ● February 15, 2006 By Damián Laufer.

Random Logic l Forum .NET l 2006 1

.NET reflection

Forum .NET 3rd Meeting ● February 15, 2006

By Damián Laufer

Page 2: Random Logic l Forum.NET l 20061.NET reflection Forum.NET 3 rd Meeting ● February 15, 2006 By Damián Laufer.

Random Logic l Forum .NET l 2006 2

Agenda

What is reflection Getting metadata Object creation / use Embedded resources Performance issues Security (!) Tools

Page 3: Random Logic l Forum.NET l 20061.NET reflection Forum.NET 3 rd Meeting ● February 15, 2006 By Damián Laufer.

Random Logic l Forum .NET l 2006 3

What is Reflection?

- A set of classes that allow you to access and manipulate assemblies and modules, and the types and the metadata that they contain.

Page 4: Random Logic l Forum.NET l 20061.NET reflection Forum.NET 3 rd Meeting ● February 15, 2006 By Damián Laufer.

Random Logic l Forum .NET l 2006 4

Getting metadata

- Get metadata from an assembly- AssemblyName- Modules- Types (classes, interfaces, value types,

enumeration types)- Members (constructors, methods,

properties, fields, events)- Parameters

Page 5: Random Logic l Forum.NET l 20061.NET reflection Forum.NET 3 rd Meeting ● February 15, 2006 By Damián Laufer.

Random Logic l Forum .NET l 2006 5

(classes, interfaces, value types, enumeration types)

Page 6: Random Logic l Forum.NET l 20061.NET reflection Forum.NET 3 rd Meeting ● February 15, 2006 By Damián Laufer.

Random Logic l Forum .NET l 2006 6

Object creation

- Load assemblies dynamically- Create classes- Call members- Get events

Page 7: Random Logic l Forum.NET l 20061.NET reflection Forum.NET 3 rd Meeting ● February 15, 2006 By Damián Laufer.

Random Logic l Forum .NET l 2006 7

Loading assemblies / types

Assemblies Asm = Assembly.GetExecutingAssembly Asm = Assembly.LoadFrom(“path”) Asm = Assembly.load(“mscorlib”)

Types Ty = asm.GetType(“Name”) Ty = GetType(String) Ty = anInstance.GetType Ty = Type.GetType(“System.Int32”)

Page 8: Random Logic l Forum.NET l 20061.NET reflection Forum.NET 3 rd Meeting ● February 15, 2006 By Damián Laufer.

Random Logic l Forum .NET l 2006 8

Embedded resources

- Bitmaps- Icons- Cursors- Audio files- Video files- String tables

Page 9: Random Logic l Forum.NET l 20061.NET reflection Forum.NET 3 rd Meeting ● February 15, 2006 By Damián Laufer.

Random Logic l Forum .NET l 2006 9

Performance issues

- Slower (muuuuuuch slower)

- So, why should you use it?- Task manager- Data bound list view control- data row<-->class loader (CRUD)

Page 10: Random Logic l Forum.NET l 20061.NET reflection Forum.NET 3 rd Meeting ● February 15, 2006 By Damián Laufer.

Random Logic l Forum .NET l 2006 10

Security – hang on!

- Getting private metadata- Calling private methods- Changing private fields- Getting private events (*)- Creating private classes

Page 11: Random Logic l Forum.NET l 20061.NET reflection Forum.NET 3 rd Meeting ● February 15, 2006 By Damián Laufer.

Random Logic l Forum .NET l 2006 11

Tools

- MSIL Disassembler (Ildasm.exe) (.NET Framework)

- Lutz Roeder's .NET Reflector

Page 12: Random Logic l Forum.NET l 20061.NET reflection Forum.NET 3 rd Meeting ● February 15, 2006 By Damián Laufer.

Random Logic l Forum .NET l 2006 12

Questions?

Page 13: Random Logic l Forum.NET l 20061.NET reflection Forum.NET 3 rd Meeting ● February 15, 2006 By Damián Laufer.

Random Logic l Forum .NET l 2006 13

TThank Youhank You