Presentation is loading. Please wait.

Presentation is loading. Please wait.

.NET Attributes and Reflection “What a developer needs to know……” Dan Douglas Blog:

Similar presentations


Presentation on theme: ".NET Attributes and Reflection “What a developer needs to know……” Dan Douglas Blog:"— Presentation transcript:

1 .NET Attributes and Reflection “What a developer needs to know……” Dan Douglas Blog: http://dandouglas.wordpress.com Twitter: @Dan_Douglas E-mail: dan.douglas@gmail.comhttp://dandouglas.wordpress.com Presented By

2 What are Attributes? A.NET Object Represents data you want to associate with a target within the assembly Many possible targets, including, Assembly, Class, Member, Constructor, Enum, Interface, and Event Intrinsic Attributes (part of the CLR) Custom Attributes (developed)

3 …..Attributes Create a custom attribute by creating a class that inherits from System.Attribute Attributes are accessed by the application using reflection to get attribute information Useful to easily provide additional data to a target without having to write a lot of additional code

4 …..Attributes Multiple attributes can be assigned to a single target Many attributes in the System.ComponentModel namespace used by UI controls ◦ Provides information like Visibility, and Display Name

5 How to Specify an Attribute In this example the LastName Property is given the category of Main Info and the Display Name of Last Name UI Controls such as grids or the PropertyGrid use this information

6 What is Reflection? “In computer science, reflection is the process by which a computer program can observe and modify its own structure and behavior” (from Wikipedia) Application can read it’s own metadata Late-binding access to objects without knowing the information at design time ◦ Example: instantiate a class located outside the project by name or call a method of a class by name

7 Reflection Usage In.NET View metadata within an assembly Type Discovery ◦ Look at types within an assembly and also be able to instantiate them and use them Late Binding ◦ Dynamically instantiate types ◦ Invoke properties and methods dynamically from dynamically instantiated classes Create your own types and IL at runtime using Reflection.Emit (advanced)

8 From a Technical Perspective… Reflection objects are available in the System.Reflection namespace Some of the classes available in the reflection namespace: ◦ Assembly ◦ ConstructorInfo ◦ MethodInfo

9 From a Technical Perspective… Some of the classes available in the reflection namespace: ◦ EventInfo ◦ PropertyInfo ◦ ParameterInfo ◦ CustomAttributeData

10 From a Technical Perspective… System.Reflection.Emit Namespace ◦ Advanced Level of Reflection ◦ Used in Very Specialized Scenarios ◦ Dynamically build assemblies and types ◦ Allows you to generate and execute.NET (IL-Intermediate Language) code on demand at runtime

11 Red Gate.NET Reflector Useful utility that uses reflection to get information about.NET assemblies Allows you to view, navigate, and search through the class hierarchies of.NET assemblies Look at the code behind the objects in.NET Framework classes or any.NET compiled components to see how they work Because reflection allows access to private members, these members are visible within.NET reflector (Demo -.NET Reflector)

12 Many Practical Uses….. Pluggable Application Architectures ◦ At runtime, load modules such as UI components into the application Business Objects ◦ Revert\cancel changes to a business object by cycling through its properties using reflection Quick and Dirty User Interfaces ◦ Get properties of a business object and add appropriate labels/text boxes to a form at runtime using property names

13 Reflection Performance ◦ Reflection is faster in.NET 2.0 and higher than it was in.NET 1.1 ◦ When using reflection on a server (ex: ASP.NET) special concern should be taken to ensure that performance won’t be impacted with much higher workloads ◦ In situations where you do not know the object at design time, use a standard interface when possible  You can avoid further reflection calls once you have a reference to the object by calling the methods of the interface ◦ Don’t avoid reflection due to performance concerns – rather use it where it makes sense

14 Demo….. Use reflection to dynamically load an assembly located outside of the project and access and invoke one its methods

15 Resources Hanselminutes Podcast #37 – Reflection http://www.hanselminutes.com/default.aspx?showID=37 http://www.hanselminutes.com/default.aspx?showID=37 O’Reilly – Programming C# Chapter 18 (Attributes And Reflection) http://oreilly.com/catalog/progcsharp/chapter/ch18.html http://oreilly.com/catalog/progcsharp/chapter/ch18.html Dodge Common Performance Pitfalls to Craft Speedy Applications http://msdn.microsoft.com/en-us/magazine/cc163759.aspx http://msdn.microsoft.com/en-us/magazine/cc163759.aspx Real-world Reflection in.NET http://www.devx.com/dotnet/Article/31578/1954 http://www.devx.com/dotnet/Article/31578/1954 My Blog (Dan Douglas) http://dandouglas.wordpress.com

16 Questions? Consulting Inquiries? (519) 777-2258 Dan Douglas Blog: http://dandouglas.wordpress.com Twitter: @Dan_Douglas E-mail: dan.douglas@gmail.comhttp://dandouglas.wordpress.com


Download ppt ".NET Attributes and Reflection “What a developer needs to know……” Dan Douglas Blog:"

Similar presentations


Ads by Google